7

Ich verwende CarrierWave::RMagick, um Miniaturansichten von Bildern für eine Rails-App zu erstellen, und ich habe einen Qualitätsverlust festgestellt, wenn die Bilder verkleinert werden. Dies ist bis zu einem gewissen Grad verständlich, da wir weniger Pixel in einem verkleinerten Bild und daher weniger Qualität haben, aber ich würde eine bessere Qualität erwarten. Ich zeige Ihnen ein Beispiel:Verlust der PNG-Bildqualität nach CarrierWave :: RMagick resize_to_fit

OriginalPhotoshop (Bicubic)RMagick

Von links nach rechts, die erste ist das Original (100x105), das zweite ist Photoshop Bicubic Resize (95x100), und der dritte ist das Ergebnis RMagicks resize_to_fit (95x100).

In diesem Beispiel ist das Originalbild nur geringfügig größer als das Miniaturbild, das ich möchte, aber ich zwinge grundsätzlich jedes Miniaturbild auf 100x100 max. Ich hoffe, Sie können den Unterschied zwischen den verkleinerten Bildern sehen. Es mag albern sein, die Qualität von Photoshop mit der von RMagick zu vergleichen, aber selbst das Verkleinern von Bildern in Chrome sorgt für eine bessere Bildqualität.

Ich verwende grundsätzlich diese in der CarrierWave Uploader Klasse:

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

Alle Ideen, wie die Bildqualität verbessert werden kann? oder wenn es Alternativen zu RMagick gibt, die es besser machen können?

EDIT: Ich habe versucht this, obwohl das keinen Unterschied machte. Ich dachte, das wäre sowieso für JPEG-Bilder.

+0

Haben Sie das jemals herausgefunden? – cman77

+1

Nein, nie. Ich konnte auch keine bessere Option finden, also habe ich mich damit abgefunden :) – Merott

+0

jpg hilft bei bestimmten Bildern mit vielen Farbverläufen. Ich vermute jedoch, dass das Problem mit den alternierenden RMagick-Algorithmen zur Skalierung besteht. In Photoshop sind die Ergebnisse unterschiedlich, ich glaube, das ist die Ursache. Eine Alternative zu RMagick ist Jimp, aber es ist völlig anders und nicht für Schienen gemacht. – Eddie

Antwort

0

Das Problem scheint in der Imagemagick-Bibliothek zu liegen und nicht spezifisch für carrierwave oder rmagick.

Sie können dies in der Befehlszeile testen. Beide Befehle erzeugen die gleiche verschwommene Ausgabe als RMagick, imagemagick eigenen mogrify Befehl:

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

Die imagemagick docs legen nahe, dass die -resize Befehl (verwendet von carrierwave über RMagick oder minimagick) erzeugt verschwommene Ergebnisse für kleine Änderungen wie die Wir testen hier, und Sie sind besser dran mit dem Befehl -adaptive-resize, aber in meinen schnellen Tests konnte ich kein besseres Ergebnis erzielen.

Andere haben reported better results mit graphicsmagick anstelle von imagemagick (die auch einen Wechsel zu minimagick von rmagick erfordern), aber ich habe dies nicht getestet.