2011-11-15 148 views
2

我試圖將rgb中的jpeg圖像轉換爲CMYK色彩空間。唯一的問題是我的最終輸出總是黑色的圖像。但足夠有趣的是MAC中的預覽應用程序正確顯示圖像。似乎沒有一個成功的rgb到cmyk轉換的例子,在我看來迄今爲止的任何地方。以下是我用來嘗試轉換的代碼。此代碼正常工作如果我使用RGB ICC配置文件執行轉換爲rgb。任何指導非常感謝。使用ColorConverterOp將RGB JPEG轉換爲CMYK JPEG Java

import javax.imageio.ImageIO; 

public class TestClass { 

    public static void main(String[] args) throws Exception { 
    BufferedImage cmykImage = ImageIO.read(new File(
      "CMYK_Sample.jpg"));  
    BufferedImage rgbImage = null; 

    ColorSpace cpace = new ICC_ColorSpace(ICC_Profile.getInstance(TestClass.class.getClassLoader().getResourceAsStream("icc/USWebCoatedSWOP.icc"))); 

    ColorConvertOp op = new ColorConvertOp(cpace, null);  
    rgbImage = op.filter(cmykImage, null); 

    ImageIO.write(rgbImage, "JPEG", new File("CMYK_Sample_RGB_OUTPUT2.jpg")); 

    } 
} 
+0

你怎麼知道圖像總是黑色的?您使用哪些軟件來確定該軟件,以及爲什麼該軟件應該比Mac上的預覽應用程序更可靠? – Codo

+0

好的,也許正確的詞是「它看起來是黑色的」,在Gimp和Photoshop以及Ubuntu預覽應用程序和圖像查看器中都是如此。就可靠性而言,我不認爲我暗示我認爲其中一方更可靠。我只是指出,mac預覽似乎向我展示了我所期望的,而其他應用程序則不一樣。 – mtanzania

回答

1

CMYK是用於印刷。因此,除了pdf和postscript文件外,幾乎沒有可能展示它。 JPEG幾乎只能顯示RGB。因此,在您的最後一行ImageIO.write中,您嘗試將cmyk讀爲RGB。這是問題。

CMYK的JPEG:「Adobe Photoshop和其他一些面向印前的應用程序時,要求保存JPEG從CMYK圖像模式將產生 四通道CMYK JPEG文件 幾乎沒有任何東西,這不是印前嫺熟將CMYK應對JPEGs(或其他任何CMYK格式的 )。在爲Web使用JPEG時,確保 從RGB或灰度模式保存。「 (http://www.faqs.org/faqs/jpeg-faq/part1/)

至於在java中顯示CMYK文件,請使用java-2d(http://download.oracle.com/javase/1.3 /docs/guide/2d/spec/j2d-color.fm2.html)