7

Tôi đang sử dụng CarrierWave::RMagick để tạo các phiên bản hình thu nhỏ của hình ảnh cho ứng dụng Rails và tôi đã nhận thấy mất chất lượng khi hình ảnh bị thu nhỏ. Điều này có thể hiểu được ở một mức độ nhất định, vì chúng tôi có ít pixel hơn trong hình ảnh thu nhỏ và do đó chất lượng kém hơn, nhưng tôi mong đợi chất lượng tốt hơn. Tôi chỉ cho bạn một ví dụ:Mất chất lượng hình ảnh PNG sau CarrierWave :: RMagick resize_to_fit

OriginalPhotoshop (Bicubic)RMagick

Từ trái sang phải, đầu tiên là bản gốc (100x105), điều thứ hai là thay đổi kích thước của Photoshop Bicubic (95x100), và thứ ba là kết quả của RMagick's resize_to_fit (95x100).

Ví dụ này, hình ảnh gốc chỉ lớn hơn một chút so với hình thu nhỏ tôi muốn, nhưng về cơ bản, tôi buộc mọi hình thu nhỏ phải có kích thước tối đa là 100x100. Tôi hy vọng bạn có thể thấy sự khác biệt giữa các hình ảnh thu nhỏ. Nó có thể là ngớ ngẩn để so sánh chất lượng của Photoshop với chất lượng của RMagick, nhưng thậm chí phóng to trong Chrome để làm cho hình ảnh nhỏ hơn tạo ra một hình ảnh chất lượng tốt hơn.

Tôi đang sử dụng về cơ bản này trong lớp uploader CarrierWave:

version :thumb do 
    process :resize_to_fit => [100, 100] 
    end 

Bất kỳ ý tưởng về cách chất lượng hình ảnh có thể được cải thiện? hoặc nếu có bất kỳ lựa chọn thay thế cho RMagick có thể làm tốt hơn?

EDIT: Tôi đã thử this, mặc dù điều đó không tạo ra bất kỳ sự khác biệt nào. Tôi nghĩ rằng đó là cho hình ảnh JPEG anyway.

+0

Bạn đã bao giờ tìm ra điều này chưa? – cman77

+1

Không, không bao giờ. Tôi cũng không thể tìm thấy một lựa chọn tốt hơn, vì vậy tôi đưa lên nó :) – Merott

+0

jpg sẽ giúp với một số hình ảnh sử dụng nhiều gradient. Tuy nhiên, tôi nghi ngờ vấn đề là với thuật toán RMagick cũ được sử dụng để mở rộng quy mô. Trong photoshop các kết quả khác nhau, tôi tin rằng đó là nguyên nhân. Một thay thế cho RMagick là Jimp nhưng nó hoàn toàn khác và không được tạo ra cho đường ray. – Eddie

Trả lời

0

Sự cố có vẻ như nằm trong thư viện hình ảnh và không cụ thể với sóng mang hoặc rmagick.

Bạn có thể kiểm tra điều này tại dòng lệnh. Cả hai lệnh sản xuất đầu ra mờ giống như rmagick, sử dụng riêng mogrify lệnh ImageMagick của:

mogrify -resize 100x100 original.png 
mogrify -resize 100x100 -quality 100 original.png 

Các imagemagick docs gợi ý rằng -resize lệnh (sử dụng bởi carrierwave qua rmagick hoặc minimagick) tạo ra kết quả mờ cho những thay đổi nhỏ như một trong những chúng tôi đang thử nghiệm ở đây và bạn tốt hơn với lệnh -adaptive-resize, nhưng trong thử nghiệm nhanh chóng của tôi, tôi đã không thể tạo ra kết quả tốt hơn.

Những người khác có reported better results bằng cách sử dụng đồ họamagick thay vì imagemagick (cũng có thể yêu cầu chuyển sang giảm thiểu từ rmagick), nhưng tôi chưa thử nghiệm điều này.

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