难啊:java生成CMYK色彩空间的图片
因为印刷需要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;
} --------------------编程问答-------------------- :-(,,果然还是没人帮忙,,,难道java真是不适合图像编程莫,,, --------------------编程问答-------------------- http://stackoverflow.com/questions/4472362/how-can-i-convert-an-rgb-image-to-cmyk-and-vice-versa-in-java
--------------------编程问答-------------------- Some image formats doesn't allow CMYK color spaces (PNG, JPEG/JFIF, GIF...) and for normal users printing in RGB is desirable. --------------------编程问答-------------------- 这个,也许是真额不支持吧吧,,不过,有人知道phtotoshop上面的CMYK色彩空间是怎么转换出来的莫,查了很多资料发现也是读ICC文件,不过颜色就是那么大的差别 --------------------编程问答-------------------- 好像是 TIFF支持 CMYK
补充:Java , Java SE