2010-09-02 3 views
6

В Linux я делаю ниже, чтобы конвертировать многостраничный PDF в изображения с измененными размерами и с высоким разрешением:RMagick новообращенный проблема

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

для жизни меня, я не могу воспроизвести это EXACT с помощью 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 
    } 
} 

Cheers, Г.

+3

НАЙДЕНО решение. Вы должны использовать: img = Magick :: Image :: read ('test.pdf') {self.density = 300} .each {| img | # blah} Это в основном читается в файле с указанной плотностью. – gurpal2000

ответ

5

Используйте блок с параметрами качества для метода new вместо метода write:

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 

Не уверен, что на самом деле о colorspace и interlace варианты, но он определенно работает для quality и density.

+0

Да, его не работает в цветовом пространстве. Есть ли способ изменения цветового пространства? –

Смежные вопросы