RMagick 转换问题

6

在Linux中,我正在执行以下操作将多页PDF转换为具有高分辨率的调整大小的图像:

convert -verbose -colorspace RGB -resize 800 -interlace none -density 300 -quality 80 test.pdf test.jpg

我真的无法使用RMagick复制这个确切的命令。我尝试了下面这样的东西,但图像没有我想要的大小/分辨率。有什么想法吗?

Magick::ImageList.new('test.pdf').each_with_index { |img, i|
  img.resize_to_fit!(800, 800)
  img.write("test-#{i}.jpg") {
    self.quality = 80
    self.density = '300'
    self.colorspace = Magick::RGBColorspace
    self.interlace = Magick::NoInterlace
  }
}

欢呼, G.

3
找到了解决方案。您需要使用:img = Magick :: Image :: read('test.pdf'){self.density = 300} .each {| img |#blah} 这基本上是使用指定的分辨率读取文件。 - gurpal2000
1个回答

6

使用带有质量选项的块来替代write方法中的new方法:

Magick::ImageList.new('test.pdf') do
  self.quality = 80
  self.density = '300'
  self.colorspace = Magick::RGBColorspace
  self.interlace = Magick::NoInterlace
end.each_with_index do |img, i|
  img.resize_to_fit!(800, 800)
  img.write("test-#{i}.jpg")
end

实际上不确定关于colorspaceinterlace选项,但对qualitydensity选项肯定有效。


是的,它对色彩空间不起作用。有没有办法改变色彩空间呢? - Raju akula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接