Imagemagick - 将psd转换为jpg - 生成空白图像

时间:2017-02-28 05:13:43

标签: ruby-on-rails ruby imagemagick imagemagick-convert psd

我在ruby中使用以下代码将psds生成为jpgs -

process_file = abc.psd[0]
jpg_file = abc.jpg

system ("convert #{process_file} "\
  "-profile '#{Rails.root}/lib/folder_name/AdobeRGB1998.icc' "\
  "-profile '#{Rails.root}/lib/folder_name/sRGB_IEC61966-2-1_black_scaled.icc'"\
  "-scale 3072x3072 -quiet #{jpg_file} ")

但是对于少数psds,生成的jpgs是服务器中的空白图像。经过一些研究,我发现了-flatten的一种方法,但它并不总能获得正确的结果。那么,是否有一个适合所有的解决方案,适用于任何psds层(以及任何大小的psd)。任何对上述代码的调整都表示赞赏。

当我使用flatten时,代码会发生变化:

process_file = abc.psd
jpg_file = abc.jpg

system ("convert #{process_file} "\
  "-profile '#{Rails.root}/lib/folder_name/AdobeRGB1998.icc' "\
  "-profile '#{Rails.root}/lib/folder_name/sRGB_IEC61966-2-1_black_scaled.icc' "\
  "-flatten -scale 3072x3072 -quiet #{jpg_file} ")

1 个答案:

答案 0 :(得分:2)

我不确定这一点,但我怀疑它与预览有关。

我相信Adobe通常会在PSD中创建整个文档的预览作为第一个“图层”,如果没有嵌入式预览,您的脚本可能会失败,那么您需要让 ImageMagick 收集所有图层并将它们展平成一个统一的整体图像。

我建议您检查 Photoshop 中的选项是否嵌入预览。对不起,这不是我最具体的答案,但它可能有所帮助。