Paperclip Gem无法转换PNG文件

时间:2017-02-14 18:33:54

标签: ruby-on-rails imagemagick paperclip

我在尝试上传PNG文件时遇到错误。它们在尺寸转换期间失败(相同图像工作的JPG)。

[paperclip] Trying to link /var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/RackMultipart20170214-36543-9hpxwk.png to /var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/d37e49548cb311938fd7b9a4fad0ba5920170214-36543-1ohpjiw.png
[paperclip] Trying to link /var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/d37e49548cb311938fd7b9a4fad0ba5920170214-36543-1ohpjiw.png to /var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/3ba1b91e6e962230b9633ff816bc1a9120170214-36543-3t80t8.png
Command :: file -b --mime '/var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/3ba1b91e6e962230b9633ff816bc1a9120170214-36543-3t80t8.png'
Command :: identify -format '%wx%h,%[exif:orientation]' '/var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/d37e49548cb311938fd7b9a4fad0ba5920170214-36543-1ohpjiw.png[0]' 2>/dev/null
Command :: identify -format %m '/var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/d37e49548cb311938fd7b9a4fad0ba5920170214-36543-1ohpjiw.png[0]'
Command :: convert '/var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/d37e49548cb311938fd7b9a4fad0ba5920170214-36543-1ohpjiw.png[0]' -auto-orient -resize "x40" -crop "40x40+10+0" +repage -quality -95 -strip '/var/folders/pm/62y5jbv57ln82b3fr6cs5wbh0000gn/T/b7e52de8a8f1bb07d5db075edbe15b4c20170214-36543-1ui2yuo'
Completed 500 Internal Server Error in 481ms (ActiveRecord: 21.4ms)

因此,您可以看到它在尝试转换时立即失败。在我的模型中:

  has_attached_file :picture,
                    styles: {tiny: ["40x40#", :jpg], square_thumb: "100x100#", thumb: "100x100>", square: "300x300#", medium: "300x300>", large: "600x600>", xlarge: '1000x1000>'},
                    convert_options: {thumb: "-quality 95 -strip", medium: "-quality 95 -strip", tiny: "-quality -95 -strip", square_thumb:"-quality -95 -strip", square:"-quality -95 -strip"  },
                    url: "/system/:class/:id/headshot_:hash.:extension",
                    hash_secret: ENV['DOC_SECRET']

  validates_attachment :picture, presence: true,
                       content_type: { content_type: /\Aimage/ },
                       size: { less_than: 3.megabytes }

注意,在我尝试调试时,我更改了tiny转换以将PNG转换为JPG,现在,每当我上传PNG时,tiny转换都有效,而下一次转换失败。

这在生产和开发中都会发生,所以要么我设置错了,要么就是Paperclip问题。我不倾向于认为这是一个ImageMagick问题,除非我和Heroku(生产服务器)都有同样的问题。顺便提一句,强制转换为PNG - ["40X40#, :png]也会失败。

我想我可以强制将每个图像转换为JPG,对于这个应用程序来说这不是什么大问题,但我宁愿找出根本问题并解决它。

另一个注意事项,我也试过tiny: "40x40>",但也失败了。我可以让转换工作的唯一方法是强制格式更改为非PNG。我正在使用Paperclip版本5.1.0

更新: 删除tiny: "-quality -95 -strip",允许转换工作 - 所以问题出在某处。我必须用尽,但我的猜测是质量转换不适用于PNG文件。

0 个答案:

没有答案