【问题标题】:RMagick - how to create a thumbnail with an automatic height?RMagick - 如何创建具有自动高度的缩略图?
【发布时间】:2014-02-16 14:52:52
【问题描述】:

我正在使用 RMagick 创建这样的缩略图:

    img = Magick::Image.read(image_url).first
    target = Magick::Image.new(110, 110) do
      self.background_color = 'white'
    end
    img.resize_to_fit!(110, 110)
    target.composite(img, Magick::CenterGravity, Magick::CopyCompositeOp).write(thumb_path)

这很好 - 我将加载当前图像,为新拇指创建一个“空间”,然后将其放置在那里。

但是,我需要创建一个拇指,宽度为 110px,高度将被自动计算...如何做到这一点?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby image-processing imagemagick rmagick


    【解决方案1】:

    你宁愿使用resize_to_fill!

    Doc here

    【讨论】:

      【解决方案2】:
      image = Magick::Image.read(image_url).first
      image.format = "JPG"
      image.change_geometry!("110X110") { |cols, rows| image.thumbnail! cols, rows }
      image.write("<path to save thumbnail>")
      

      【讨论】:

      • 谢谢,我试过了,这种方法似乎奏效了。但是,当我使用 RMagick 调整图像大小时,新图像有点模糊。如何解决这个问题(我没有指定图像格式)?
      • 此缩略图尺寸非常小,因此当您将其显示为较大的尺寸时,它会变得模糊。如果您希望它显示在浏览器上,最好在通过 RMagic 调整大小时稍微增加尺寸,然后在 HTML 视图中设置所需的显示宽度。
      • 我已经为 600x600 的缩略图(原始图像尺寸为 1200x1000)尝试了这个,它有点模糊。有什么办法可以解决吗?
      • 我在答案中添加了锐化图像的说明。
      【解决方案3】:

      事实证明这非常简单! ImageMagick 和 GraphicsMagick 都正确地保持纵横比,所以在你的情况下,只需给出你想要的图像的最大宽度。请参阅http://www.imagemagick.org/script/command-line-processing.php#geometry 了解有关魔法维度运算符的更多信息。

      如果您发现您的 ruby​​ 进程的 RAM 消耗正在增长,您可能需要切换到外部执行映像库,例如 https://github.com/mceachen/micro_magick。此外,切换到 GraphicsMagick 是一个全面的胜利,顺便说一句,可以在更短的时间内提供更好的图像编码。

      require 'micro_magick'
      img = MicroMagick::Convert.new("input.png")
      img.resize("110") # this restricts to width, if you want to restrict to height, use "x345"
      img.unsharp(1.5) # This runs an "unsharp mask" convolution filter, and is optional
      img.write("output.png")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多