因为印刷需要CMYK的色彩空间的图片。用java去生成CMYK色彩的空间的图片,生成的背景颜色总是黑色,也没办法把白色覆盖上去,覆盖后变成了灰色,不知道有没有人遇到过相同的问题,部分代码如下public static void main(String[] args) throws Exception { ICC_Profile ICC_pf = null;

//读取CMYK配置文件,获取CMYK的色彩空间
String Filename = "ISOcoated_v2_eci.icc"; try {
ICC_pf = ICC_Profile.getInstance(Filename);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Can't create ICC_Profile");
}
cmykCS = new ICC_ColorSpace(ICC_pf); //输出图像文件
FileOutputStream fos = new FileOutputStream("D://test// 1.jpg"); //JPEGCodec.createJPEGEncoder的作用是创建一个和指定输出流关联的JPEGImageEncoder对象。 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
//画出画布

BufferedImage output = getImage();



JPEGEncodeParam jpegEncodeParam = encoder
.getDefaultJPEGEncodeParam(output);
jpegEncodeParam.setQuality(1f, false);
jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
jpegEncodeParam.setXDensity(600);
jpegEncodeParam.setYDensity(600);
encoder.encode(output, jpegEncodeParam);
fos.close(); }                    private static BufferedImage getImage() { // 生成画布


IMAGEWIDTH = Math.round(Float.valueOf(Font_zise[CODE_LENGTH - 2]) / 2) *600/72*CODE_LENGTH;

ColorModel cmykModel = new ComponentColorModel(cmykCS, null, false,
false, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE);



//此类扩展了 Raster 以提供像素写入功能  float a[]={(float) 1,(float) 1,(float)1,(float)1};
 float b[]={(float) 0,(float) 0,(float)0,(float)0};
 

WritableRaster cmykRaster = cmykModel
.createCompatibleWritableRaster(IMAGEWIDTH, IMAGEHEIGHT); BufferedImage image=new BufferedImage(cmykModel,cmykRaster,false,null);




Color RGBColor = new Color(image.getColorModel().getColorSpace(),b, (float) 1);
Color CMYKColor = new Color(image.getColorModel().getColorSpace(),a, (float) 1);
// 获取图形上下文 (生成画笔) Graphics2D graphics = image.createGraphics();
graphics.setColor(CMYKColor); // 填充矩形区域 ,作为背景
graphics.fillRect(0, 0, IMAGEWIDTH, IMAGEHEIGHT); graphics.dispose();

return image; }

解决方案 »

  1.   

    :-(,,果然还是没人帮忙,,,难道java真是不适合图像编程莫,,,
      

  2.   

    http://stackoverflow.com/questions/4472362/how-can-i-convert-an-rgb-image-to-cmyk-and-vice-versa-in-java
      

  3.   

    Some image formats doesn't allow CMYK color spaces (PNG, JPEG/JFIF, GIF...) and for normal users printing in RGB is desirable.
      

  4.   

    这个,也许是真额不支持吧吧,,不过,有人知道phtotoshop上面的CMYK色彩空间是怎么转换出来的莫,查了很多资料发现也是读ICC文件,不过颜色就是那么大的差别