当前位置:编程学习 > JAVA >>

难啊: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.
--------------------编程问答-------------------- 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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,