【问题标题】:ImageMagick scales down the processed images on HerokuImageMagick 缩小 Heroku 上处理后的图像
【发布时间】:2014-07-09 18:26:52
【问题描述】:

这是一个简单的带有单个 url 属性的原始 Rails 模型。

class Photo < ActiveRecord::Base
  validates :url, presence: true

  def watermark
    remote_photo = MiniMagick::Image.open(url).write("#{Rails.public_path}/photos/photo-#{id}.jpg")
    photo = MiniMagick::Image.open("#{Rails.public_path}/photos/photo-#{id}.jpg")

    marked_photo = photo.composite(mark, 'jpg') do |c|
      c.gravity 'SouthEast'
      c.geometry '+15'
    end

    marked_photo.write(marked_path)
    File.delete("#{Rails.public_path}/photos/photo-#{id}.jpg")
  end

  def marked_path
    "#{Rails.public_path}/photos/photo-marked-#{id}.jpg"
  end

private

  def mark(mark = 'mark.jpg')
    @mark ||= MiniMagick::Image.open("#{Rails.public_path}/#{mark}")
  end
end

#watermark 方法在照片的右下角放置一个标记图像,并将文件写入public/photos/photo-marked-#{id}.jpg。它在我的本地机器上完美运行,但是在 Heroku 上,大约 600x800 像素的返回图像变为 10x15 像素。

【问题讨论】:

    标签: ruby-on-rails heroku imagemagick minimagick


    【解决方案1】:

    好的,问题出在我指定几何属性值的方式上。在c.geometry '+15' ImageMagick 的情况下,将 15 作为宽度并调整图像大小以保持纵横比。为了保持原始大小并应用水平偏移,该值应类似于'x+15',即widthxheight+offset

    以上都是关于 ImageMagick 的 6.5.7 版本,它是安装在 Heroku 上的那个。最初的'+15' 在最新版本中运行良好。

    感谢@mschoening,他帮我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2017-01-17
      • 2017-10-14
      • 1970-01-01
      • 2012-11-08
      • 2014-03-30
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多