栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在ColdFusion(Java)中在CMYK和RGB之间转换图像?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在ColdFusion(Java)中在CMYK和RGB之间转换图像?

我使用Java ImageIO库(https://jai-imageio.dev.java.net)。它们不是完美的,但可以很简单,就可以完成工作。至于从CMYK转换为RGB,这是我能想到的最好的方法。

下载并安装适用于您平台的ImageIO JAR和本机库。本地库是必不可少的。没有它们,ImageIO
JAR文件将无法检测CMYK图像。最初,我给人的印象是本机库可以提高性能,但是任何功能都不是必需的。我错了。

我注意到的唯一另一件事是,转换后的RGB图像有时比CMYK图像要轻得多。如果有人知道如何解决该问题,我将不胜感激。

以下是一些代码,可以将CMYK图像转换为任何受支持格式的RGB图像。

谢谢你,
兰迪Stegbauer

package cmyk;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 Main{        public static void main(String[] args)    {        for (int ii = 0; ii < args.length; ii++)        { String filename = args[ii]; 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());     } }        }    }        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;    }        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;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号