2010-09-02 34 views
6

Trong linux tôi đang làm dưới đây để chuyển đổi một tập tin PDF nhiều trang thành những hình ảnh thay đổi kích cỡ và với độ phân giải cao:RMagick vấn đề chuyển đổi

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

Đối với cuộc sống của tôi, tôi dường như không thể tái sản xuất này CHÍNH XÁC lệnh sử dụng RMagick. Tôi đã thử một cái gì đó như thế này bên dưới nhưng hình ảnh không có kích thước/độ phân giải tôi muốn. Bất kỳ ý tưởng?

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

Chúc mừng, G.

+3

TÌM giải pháp. Bạn phải sử dụng: img = Magick :: Image :: read ('test.pdf') {self.density = 300} .each {| img | # blah} Điều này về cơ bản sẽ đọc trong tệp có mật độ được chỉ định. – gurpal2000

Trả lời

5

Sử dụng khối với các tùy chọn chất lượng cho phương pháp new thay vì phương pháp 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 

Không chắc thực sự về colorspaceinterlace tùy chọn, nhưng nó chắc chắn công trình cho qualitydensity.

+0

Vâng, nó không hoạt động cho không gian màu. Có cách nào để thay đổi không gian màu không? –

Các vấn đề liên quan