`

java 实现cmyk转图片格式

    博客分类:
  • JAVA
阅读更多

最近开发的系统反馈回来一个问题,是因为,图片中的CMYK不支持页面显示,在进行缩略图的时候,页面中的小图片不能显示出来。后台google一下,java可以实现rmyk转成RGB的格式。具体方法;仅供参考



package com.util;

import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException; 
import javax.imageio.ImageIO; 
import org.apache.commons.lang.StringUtils;

public class CmykToRgb {

   /**
    *  Creates new RGB images from all the CMYK images passed     
    *  * in on the command line.     
    *  * The new filename generated is, for example "GIF_original_filename.gif".     
    **     
    **/    
public static void main(String[] args)     {          

String filename = "d:\\2889.JPG";           
boolean cmyk = isCMYK(filename);            
System.out.println(cmyk + ": " + filename);            
if (cmyk){                
try{                    
String rgbFile = cmyk2rgb(filename);                    
System.out.println(isCMYK(rgbFile) + ": " + rgbFile);                
}catch (IOException e){                   
System.out.println(e.getMessage());                
}            
}            
}     
/**      * If 'filename' is a CMYK file, then convert the image into RGB,     
* * store it into a JPEG file, and return the new filename.     
* *      * @param filename     
* */    
private static String cmyk2rgb(String filename) throws IOException{        
// Change this format into any ImageIO supported format.        
String format = "gif";        
File imageFile = new File(filename);        
String rgbFilename = filename;        
BufferedImage image = ImageIO.read(imageFile);        
if (image != null){            
int colorSpaceType = image.getColorModel().getColorSpace().getType();            
if (colorSpaceType == ColorSpace.TYPE_CMYK){                
BufferedImage rgbImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR);                
ColorConvertOp op = new ColorConvertOp(null);                
op.filter(image, rgbImage);                 
rgbFilename = changeExtension(imageFile.getName(), format);                
rgbFilename = new File(imageFile.getParent(), format + "_" + rgbFilename).getPath();                
ImageIO.write(rgbImage, format, new File(rgbFilename));            
}        
}        
return rgbFilename;    
}     
/**      * Change the extension of 'filename' to 'newExtension'.     
* *      * @param filename     
* * @param newExtension     
* * @return filename with new extension     
* */    
private static String changeExtension(String filename, String newExtension){        
String result = filename;        
if (filename != null && newExtension != null && newExtension.length() != 0); {            
int dot = filename.lastIndexOf('.');            
if (dot != -1){                
result = filename.substring(0, dot) + '.' + newExtension;            
}        
}        
return result;    
}     
private static boolean isCMYK(String filename){        
boolean result = false;        
BufferedImage img = null;        
try{            
img = ImageIO.read(new File(filename));        
}catch (IOException e){            
System.out.println(e.getMessage() + ": " + filename);        
} if (img != null){            
int colorSpaceType = img.getColorModel().getColorSpace().getType();            
result = colorSpaceType == ColorSpace.TYPE_CMYK;        
}         
return result;    
}
}
分享到:
评论
3 楼 kuoshuangqi 2015-01-08  
没办法读取cmyk格式的图片,这个东西基本没用
2 楼 lvhongfen 2012-03-26  
关键点是:在判断是否是cmyk图片中LZ的方法isCMYK(file)中
ImageIO.read(new File(filename)); 根本就没法读取cmyk的图片
1 楼 blognmb121 2012-03-21  
毫无价值

相关推荐

    java 图片转换 cmyk转换rgb ie6,7,8无法显示cmyk格式的jpg图片

    还在为ie无法显示cmyk格式的jpg图片烦恼吗。本代码完全完整cmyk转rgb 严格经过测试

    基于Java实现图像处理小工具【100011227】

    本项目为Java图像处理小工具。本Java工具包提供图片色彩空间的转换、图片dpi刷新的能力。我们经常用到的色彩空间主要有RGB、...目前Jar包只支持将图片由RGB模式转换为CMYK模式,转换后的图片为TIFF格式,后缀为'.tif'。

    eci_offset_2009.zip

    解决ps编辑的图片或本身图片格式是cmyk格式,java.awt包无法读取问题。 官方下载的压缩包。 里面有说明文档和icc文件。如:ISOcoated_v2_300_eci.icc、ISOcoated_v2_eci.icc、ISOuncoatedyellowish.icc、SC_paper_...

    java-image-processing-survival-guide, 在Java中,关于图像处理的文章草稿.zip

    guide, 在Java中,关于图像处理的文章草稿 Java图像处理生存指南对于一些客户我需要做大量的图片处理数百万的图片- 其中很多是用户提供将各种图像格式转换为jpeg格式将pdf转换为jpeg格式重采样图像处理CMYK图像用...

    ISOcoated_v2_300_han.rar

    ISOcoated_v2_300_han.icc 用于处理图片的格式转换 例如 RGB转CMYK 本人亲测 java可行

    ImageMagick v7.0.7-16

    ImageMagick是免费软件:全部源码开放,...ImageMagick支持至少90种图片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DO

    ImageMagick-7.0.6-0-Q16-x64-dll.exe

    图片的 裁剪、镜像、缩放、模糊、加水印、旋转等操作,支持100多种图片格式,处理cmyk和rgb比较好,相比java处理不会出现变色

    Imagemagic 图片处理

    ImageMagick支持至少90种图片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2...

    jai_codec.jar

    JAI工具,操作图片资源,java通过这个工具能将cmyk的bufferedImage生成tiff格式

    ImageMagick 最新版

    ImageMagick支持至少90种图片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2...

    ImageMagick 6.4.1-3中文版下载-ImageMagick 6.4.1-3绿色软件下载

    ImageMagick支持至少90种图片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2...

    ImageDream:可以在其中编辑具有多种功能的照片的应用程序

    图片梦PNG或JPG格式的图像编辑软件选项爬亮度新增图片减去图像本地二值化全局二值化通道二值化直方图二值化伪彩色对比罗伯特·埃奇普威特的边缘索贝尔的边缘筛选将图像更改为CMYK 将图像更改为HSI

Global site tag (gtag.js) - Google Analytics