【问题标题】:Unable to crop image using mini_magick无法使用 mini_magick 裁剪图像
【发布时间】:2012-05-04 11:34:09
【问题描述】:

我使用 mini_magick 作为使用 ImageMagick 来操作一些图像的接口。 调整大小效果很好。但是当我想裁剪一些图像时:

img = MiniMagick::Image.open(url)
img.crop('200x800!')

不断提示No such file

No such file or directory - /var/folders/c4/mqlwdx_d3kj6hqcnvbjr9mn80000gn/T/mini_magick20120504-11111-16kayc1.png

【问题讨论】:

    标签: minimagick


    【解决方案1】:

    啊,我猜我在搜索错误的关键词。当我搜索 minimagick 而不是 mini_magick 时,正确的答案就会出现。 Undefined Method crop! Using Carrierwave with MiniMagick on rails 3.1.3 特别是这个答案https://stackoverflow.com/a/9961434/179691

    我确实知道有关 mini_magick 的内容只是 mogrify 的包装等等。我的问题的原因是-crop 只接受完整格式的几何图形。所以我把表达式改为:

    img.crop('200x800+0+0')
    

    这行得通。

    【讨论】:

    • 也适用于 jekyll-minimagick 和 Retinamagick! crop: "640x480+0+0"
    【解决方案2】:

    以防万一有人使用 Carrierwave 裁剪图像并将其直接上传到 Amazon S3,对我来说正确的方法如下:

    image_uploader.rb

    url=model.remote_image_url 
    crop_params="#{w}x#{h}+#{x}+#{y}"
    manipulate! do |img|
      img = MiniMagick::Image.open(url)
      img.crop(crop_params)
      img = yield(img) if block_given?
      img
    end
    

    我添加 img = MiniMagick::Image.open(url) 的原因是因为如果我不指定自己的图像,它会抛出以下错误:

    mogrify.im6: geometry does not contain image `/tmp/mini_magick20150811-15523-ac8go1.jpeg'
    

    我认为这是 mini_magick 尝试查找图像的一些默认临时路径,但由于图像远程保存在 S3 中,因此无法找到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2020-10-16
      • 2020-05-31
      • 2020-12-11
      • 2013-07-28
      • 2020-02-02
      相关资源
      最近更新 更多