我需要在服务器中将psds转换为jpgs,我在ruby中使用imagemagick

时间:2016-07-28 16:11:05

标签: ruby imagemagick

我写了一个ruby脚本,使用Imagemagick将psds转换为jpgs。 当我这样做时:

convert test.psd[0] -scale 300x300 test.jpg

此转换正常。但是,如果我有一个psds列表,如果我在循环中得到它们,如何实现相同的命令。

当我这样做时,我收到错误 - 转换:此图像格式没有解码委托

File.open("#{file_name}", "wb") do |f|
f.write(data) #create a psd file   
jpg_file = file_name.gsub(".psd",".jpg")
psd_file = file_name.gsub(".psd",".psd[0]")
system('convert "#{psd_file}" -scale 302x302 "#{jpg_file}" ')

端 我错过了什么吗?我必须使用rmagick吗? 在此先感谢:)

2 个答案:

答案 0 :(得分:1)

Ruby只插入双引号字符串。试试这个:

system("convert '#{psd_file}' -scale 302x302 '#{jpg_file}' ")

您可能还想将end移到f.write之后。

另请注意,"#{file_name}"完全等同于file_name

答案 1 :(得分:0)

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} ")

所需颜色配置文件的路径由'#{Rails.root} /lib/folder_name/AdobeRGB1998.icc'指定;和'#{Rails.root} /lib/folder_name/sRGB_IEC61966-2-1_black_scaled.icc'