首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MiniMagick Interlace不工作

MiniMagick Interlace不工作
EN

Stack Overflow用户
提问于 2017-05-17 21:59:53
回答 1查看 660关注 0票数 1

我有一些自定义方法可以使用MiniMagick调整图像的大小。

代码语言:javascript
复制
def resize_to_limit(dimensions, degrade = false)
  width, height = dimensions
  MiniMagick::Image.open(current_path).tap do |image|
    image.resize "#{width}x#{height}>"
    image.combine_options do |cmd|
      if degrade
        cmd.quality 50
      end
      cmd.alpha 'remove'
      cmd.auto_orient
      cmd.interlace 'plane'
    end
    image.format('jpg')
    image.write current_path
  end
end

当我使用identify检查结果映像时,Interlace仍然是None。不确定库是否更改了输入值,但我尝试过平面和平面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 06:44:23

我试图使用金属界面转换图像

代码语言:javascript
复制
require 'mini_magick'

MiniMagick::Tool::Convert.new do |convert|
  convert << "input.jpg"
  convert << "-interlace plane"
  convert << "output.jpg"
end

这相当于以下几点:

代码语言:javascript
复制
$ convert input.jpg -interlace plane output.jpg

实际上,该命令如预期的那样工作:

代码语言:javascript
复制
$ magick identify -verbose input.jpg output.jpg | grep Interlace
  Interlace: None
  Interlace: JPEG

您可以通过打开调试来查看代码发出的命令:

代码语言:javascript
复制
MiniMagick.configure do |config|
  config.debug = true
end

当我在运行调试代码时,会得到一堆处理临时文件的命令:

代码语言:javascript
复制
MiniMagick.debug is deprecated and will be removed in MiniMagick 5. Use `MiniMagick.logger.level = Logger::DEBUG` instead.
D, [2017-05-17T23:30:28.456080 #12301] DEBUG -- : [0.01s] identify /var/folders/dh/_zgl_f_s0t7b4wk9j27cpny80000gp/T/mini_magick20170517-12301-17vo4b8.jpg
D, [2017-05-17T23:30:28.468335 #12301] DEBUG -- : [0.01s] mogrify -resize 500x500> /var/folders/dh/_zgl_f_s0t7b4wk9j27cpny80000gp/T/mini_magick20170517-12301-17vo4b8.jpg
D, [2017-05-17T23:30:28.481606 #12301] DEBUG -- : [0.01s] mogrify -alpha remove -auto-orient -interlace plane /var/folders/dh/_zgl_f_s0t7b4wk9j27cpny80000gp/T/mini_magick20170517-12301-17vo4b8.jpg
D, [2017-05-17T23:30:28.493634 #12301] DEBUG -- : [0.01s] convert /var/folders/dh/_zgl_f_s0t7b4wk9j27cpny80000gp/T/mini_magick20170517-12301-17vo4b8.jpg[0] /var/folders/dh/_zgl_f_s0t7b4wk9j27cpny80000gp/T/mini_magick20170517-12301-hks8tq.jpg

有一件事我不得不注意到,在文件中是行:

另一方面,如果我们想要修改原始图像,我们可以使用MiniMagick::Image.new

因此,也许可以尝试new而不是open。然后观察调试输出,看看这些命令是否有意义。

也许你的代码太复杂了?也来自文献资料

作为一种方便的快捷方式,MiniMagick::Image.new还接受一个用于combine_options的可选块。

因此,如果使用combine_options,可能不需要显式调用new

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44035449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档