2009-12-05 8 views
9

Ich habe die unten unter Verwendung einer Farbumwandlungrichtig ein CMYK-Bild in RGB mit RMagick Umwandlung

if @image.colorspace == Magick::CMYKColorspace 
     # @image.colorspace #=> CMYKColorspace=12 
     @image.colorspace = Magick::RGBColorspace 
     @image = @image.negate 
    end 

Es funktioniert zu tun, etwa, aber die Farbe Leuchtkraft ist ausgeschaltet. Die Tatsache, dass ich das Bild negieren muss, hinterlässt einen sehr schlechten Geruch.

Die Dokumentation erwähnt mit color_profiles, aber darüber hinaus kann ich nicht viel finden.

Ich versuche jetzt

@image = @image.quantize(16777216, Magick::RGBColorspace) 

Und die Farben sind besser, aber immer noch aus.

+0

Ich weiß nicht über Ruby und Rmagick, aber ImageMagick selbst kann Farbprofile verarbeiten, zumindest in der Theorie. (CMYK war immer ein Schmerz mit IM, solange ich mich erinnern kann). Haben Sie Probleme beim Anwenden eines Profils oder ändert sich bei Verwendung eines Profils nichts? Welches Farbprofil hat das eingehende Material, wenn überhaupt? –

+0

Die eingehenden Dateien haben in diesem Fall ein Profil. Ich werde etwas mehr untersuchen. Ich habe mich bei den Farbprofilen verlaufen (zB wo kann ich sie herunterladen? Die ICC-Seite war nicht viel hilfreich). Vielen Dank. –

+0

Hier ist kein Platz mehr ... Siehe unten. –

Antwort

11

Dank Pekka, gaben Sie mir eine Antwort auf die Antwort (+1).

Sie müssen ImageMagick kompiliert mit dem Little Color Management System (LCMS) installiert haben. Dies kann bereits der Fall sein, wenn ein Installer oder ein Paket verwendet wurde. Aber ich kompilierte aus der Quelle. Es war so einfach wie das Installieren von LCMS aus der Quelle und das Neuerstellen von ImageMagick (./configure; make; make install).

In ImageMagick unter das funktioniert gut genaue Farbe zu reproduzieren:

convert FILENAME -profile /PATH_TO_PROFILE/sRGB.icm OUT.jpg

So in RMagick verwende ich die folgenden:

if @image.colorspace == Magick::CMYKColorspace 
    # Adjust the path as necessary 
    @image.color_profile ="/usr/local/share/ImageMagick-6.5.4/config/sRGB.icm" 
end 

@image.write("out.jpg") { self.quality = 85 } 
+0

Haben Sie eine Idee, wo Sie Farbprofile mit ImageMagick 6.8.0 finden oder installieren können? Habe es mit Homebrew installiert und finde keine * .icm Dateien auf meinem OS X. Danke für deine ansonsten sehr hilfreiche Antwort! – Javier

+2

Unter Mac OS X können Sie 'imagemagick --with-little-cms' installieren, um imagemagick mit lcms-Unterstützung zu kompilieren. Auf allen Plattformen können Sie folgendes tun: convert -list configure Die DELEGATES-Zeile sollte lcms enthalten, wenn sie richtig installiert ist. –

2

Die eingehenden Dateien, in diesem Fall haben ein Profil. Ich werde etwas mehr untersuchen. Ich habe mit den Farb Profile verloren (? Wie, wo ich sie herunterladen der ICC-Website war nicht viel Hilfe)

Sie sind nicht der einzige verwirrt; Ich war auch. Es gibt Diskussionen auf der ImageMagick Seite, die sich lohnen könnten: Here Soweit ich das damals verstanden habe, ist die korrekte Arbeit mit Profilen möglich, wenn das verwendete Profil identifiziert werden kann (zB ein Monitorprofil) oder in die Datei eingebettet ist kann zumindest für TIFF und JPG in Photoshop getan werden, denke ich). Überprüfen z.B. dies: Here. Viel Glück.

+0

Näher dran, denke ich. Es sieht so aus, als müsste Image Magick mit '--with-lcms = yes' kompiliert und die LCMS-Bibliothek installiert werden. Wenn ich einen Moment habe, werde ich es versuchen. –

2

ich, dass die schön gearbeitet Kommandozeile Lösung Who gefunden, aber die Lösung von RMagick funktionierte nicht für mich.

Um es in RMagick zu arbeiten, musste ich stattdessen die Magick :: Image # add_format -Methode verwenden, die, gemäß den Dokumenten, Ihnen erlauben wird, ein Quell- und Zielprofil anzugeben. Es sieht wie folgt aus:

if img.colorspace == Magick::CMYKColorspace 
    img.add_profile(RGB_COLOR_PROFILE) 
end 
1

RE: LCMS auf Centos 5.5, sollten Sie die neueste LCMS von der Quelle (vs. yum install) herunterzuladen und zu bauen. Ansonsten wird IM keine LCMS bei Build finden und Sie werden sich am Kopf kratzen, wie ich, und mich fragen, warum LCMS nicht in IM-Delegate-Bibliotheken enthalten ist.

4

Ich habe lange Zeit versucht, mit RMagick und Rails von einem CMYK EPS zu einem RGB PNG zu wechseln.Hoffentlich wird dies von Nutzen jemand sein:

def convert_image_from_cmyk_to_rgb(image) 
    #puts image.alpha? 
    if image.colorspace == Magick::CMYKColorspace 
    image.strip! 
    image.add_profile("#{Rails.root}/lib/USWebCoatedSWOP.icc") 
    image.colorspace == Magick::SRGBColorspace 
    image.add_profile("#{Rails.root}/lib/sRGB.icc") 
    end 
    image 
end 

Sie können die ICC-Dateien von Adobe direkt Download bei http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

Das einzige, was ich nicht in der Lage an der Suss ist, wie die Transparenz zu erhalten. Die EPS, die ich verwenden möchte, hat einen transparenten Hintergrund, der weiß wird. Leider kann ich nicht so etwas wie image.transparent("white") machen, da ich weiß im Bild habe, dass ich weiß behalten möchte.

Wenn ich die puts image.alpha? im obigen Code auskommentieren, wird false zurückgegeben.

Wer weiß, ob das, was ich versuche, mit der aktuellen Version von RMagick möglich ist, da ich mich frage, ob der Import von CMYK EPSs mit Transparenz nicht unterstützt wird.

Danke!

+0

Mein Rat wäre, nach dem Transparenzproblem in einer neuen Frage zu fragen. –

+0

Danke Mark. Habe das nun unter http://stackoverflow.com/questions/6833496/rmagick-convert-cmyk-eps-to-rgb-png-maaintaining-transparent-background getan. –

+0

bearbeite diesen, um die Frage herauszunehmen, damit was übrig bleibt nur eine Antwort auf diese Frage –