1

由于网页图片显示cmyk格式的图片不能显示,所以需要把它转化成RGK格式的图片。

以下方法可以实现。

通过加载Java ImageIO libraries 类库 去https://jai-imageio.dev.java.net下载这个类库。并进行安装

package com.ztl.book3un.util.web;
 
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:\\test\\a.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; 
    } 

这样就可以完成转化,但是有一个不好的地方就是生成生颜色失真比较严重。从美工那得知他们本来就是不一样的格式,失真比较正常。[此实例参考了国外的文章。]

更多精彩:http://www.lsoba.com

java 实现cmyk转rgb图片格式相关推荐

  1. java把对象转成图片格式转换器安卓版,java 万能图片格式转换

    话不多说,直接上代码 import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.io.File; i ...

  2. java将字体输出成图片格式_JAVA IO流中,能否将一个字符串以图片的格式输出出来呢,即字符串显示在图片上...

    展开全部 执行成功后会在D盘根目录生成32313133353236313431303231363533e59b9ee7ad9431333332616433一张名为image的jpg格式的图片,图片上以 ...

  3. Bayer到RGB,格式转换原理及具体实现

    缘起 使用海康彩色相机,采集到的图像数据是Bayer GR8格式的,如果在相机参数中改为其它彩色格式,那就是相机内部完成格式转化,就会导致采集帧率变慢.一般情况下这种方式是简单实用的,但如果想要追求更 ...

  4. java pdf 多页转换为png格式的图片

    java pdf 多页转换为png格式的图片  适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...

  5. java批量转换图片格式

    废话不多直接上代码,代码其实也不多.... package com.qiao.testImage;import java.awt.image.BufferedImage; import java.io ...

  6. java图片格式转化(例如jpg格式转化png)

    转载自  java图片格式转化(例如jpg格式转化png) import java.awt.image.BufferedImage; import java.io.File; import java. ...

  7. PHP RGB图片模式转换CMYK模式图片

    首先需要安装Imagick扩展 1.php调用phpqrcode生成图片是索引模式,首先需要转换RGB模式 代码如下: /*** 转换RGB模式图片* @param $filePath 图片路径 ** ...

  8. V4L2图像采集+图片格式转换(YUYV、RGB、JPEG)

    本篇转自博友https://blog.csdn.net/xuyangwyw/article/details/40476653文章,感谢分享. 废话不多说,直接开始流程. 1.驱动支持     在那位法 ...

  9. Java——图片格式转换

    利用java开发中遇到图片转换格式需求怎么办,利用以下方法轻松搞定. 1.利用流的方式,ImageIO调用write方法写出,选写需要的图片格式,例如"png,jpg等" /*** ...

  10. Java实现图片格式转换

    本文利用java实现将jpg tiff png格式的图片统一转换为png或tiff或jpg的图片,在转换的时候会做图像的resize: 代码实现如下: import javax.imageio.Ima ...

最新文章

  1. mysql可视化_可视化图形工具-grafana直接显示mysql数据(BI展现)
  2. Lock 与 InterruptedException
  3. python使用什么注释语句和运算-Python3 注释和运算符
  4. Exchange 2007迁移2010后部分手机邮箱不能使用解决办法
  5. 一步一步写算法(之寻找丢失的数)
  6. Nsight 调试 Caffe
  7. 华为鸿蒙会议安排,2020华为HDC日程确定,鸿蒙、HMS以及EMUI 11成最关注点
  8. mysql中的联结_MySQL的联结(Join)语法
  9. oracle 删除中文表,oracle - 删除全局临时表 - SO中文参考 - www.soinside.com
  10. DRF的@action装饰器
  11. 浙大计算机学院 数字媒体处理与企业智能计算实验室在哪个校区,浙大计算机学院各大实验室介绍.pdf...
  12. 解决Windows不在第一分区时变色龙引导问题
  13. 2017总结与2018展望
  14. String格式问题:将String格式请求方法时,String格式突然转化为对象的问题
  15. 蓄水池采样算法的python实现_蓄水池采样算法-Reservoir Sampling
  16. [转贴]郎恒《齐天大圣》Rap 搞笑!
  17. tkinter在Mac下运行主界面显示黑色
  18. 爬虫抓取BestCoder的比赛排名
  19. 指定“Vary: Accept-Encoding”标头 --压缩
  20. java版我的世界怎么疾跑,Minecraft疾跑按键设置 我的世界怎么开疾跑

热门文章

  1. 基于Ant在NetBeans 11.0中创建并使用第三方库(jar包)
  2. jquery - How can I recurse up a DOM tree? - Stack Overflow
  3. UWB定位系统上位机源码
  4. 华为2019年8月校招秋招笔试机考题解答C++实现
  5. UWP 如何阻止WebView自动打开浏览器?
  6. MBE风格图标3步速学教程
  7. 【HAVENT原创】Mac 下编译 ReactNative(CRN) 踩坑记录
  8. 小学计算机的一些课题,小学信息技术小课题研究.doc
  9. 腾讯word2vec模型缩小版
  10. 前端|如何制作调查问卷