2017-10-09 4 views
1

Gibt es sowieso ein RGB-Bild in ein CMYK-Bild mit ICC in einer Python ImageMagick-Bindung zu konvertieren. Ich weiß du kannst es einfach in der Kommandozeile machen, aber gibt es da eh einen Binding wie Wand (vorzugsweise Wand)? Was ich jetzt habe:ImageMagick - Konvertieren von Bild RGB zu CMYK mit ICC in Python

from wand.image import Image 
from urllib.request import urlopen 
response = urlopen('https://www.website.com/path/to/image.jpg') 
try: 
    with Image(file=response) as img: 
     img.type = 'truecolor' 
     img.alpha_channel = True 
     img = img.colorspace = 'cmyk' 
     img.save(filename='converted.jpg') 
finally: 
    response.close() 

ergibt das Bild HORRIBLY ungenaue Farben, aber im richtigen Farbraum. Anyway um mit einem Profil zu konvertieren? Vielen Dank.

+0

Ich bin kein Experte für Wand, aber ich weiß nicht, etwas über Profile in der Wand-Dokumentation bei https://media.readthedocs.org/pdf/wand/latest/ Zauberstab.pdf. Aber ich nehme an, Sie könnten einen Improvisationsaufruf direkt an Imagemagick in Python machen. Siehe zum Beispiel: https://stackoverflow.com/questions/40281613/call-imagemagicks-convert-command-in-python-script. Der Konvertierungsbefehl kann jedoch ein oder zwei Profile abhängig davon benötigen, ob das Eingabebild ein CMYK-Profil aufweist oder nicht. – fmw42

+0

Ich weiß wenig über Python, aber das Einschalten von Alpha für ein JPG (das keine Transparenz unterstützt) scheint falsch zu sein. Auch 'img = img.colorspace =' cmyk'' sieht verzerrt aus. Vielleicht verwenden Sie Alpha als Schwarz? –

+0

Sie können auch einen Subprozessaufruf mit EXIFTOOL verwenden, um ein Profil hinzuzufügen. Siehe zum Beispiel https://stackoverflow.com/questions/6740441/how-to-set-a-color-profile-with-exiftool – fmw42

Antwort

0

Versuchen Sie es mit wand.image.Image.transform_colorspace

with Image(file=response) as img: 
    img.transform_colorspace('cmyk') 
    img.save(filename='converted.jpg') 
+0

Dies ergibt im Wesentlichen das gleiche Ergebnis wie 'img.colorspace =' cmyk ' '. Es konvertiert nicht mit einem ICC-Profil, was ich suche. – pepper5319

Verwandte Themen