`

Java图像变灰 及相关类ColorSpace,ColorConvertOp

阅读更多
用Java进行图像处理,会遇到ColorSpace这个类:ColorSpace
public abstract class ColorSpace extends Object implements Serializable

这个类的作用用官方语言就是就很困惑了,我这里举一个例子大家就明白这个类是做什么的了,大家利用Photoshop新建一副图片的时候都要选择“颜色模式”

图片中的“颜色模式”就是我们这里的ColorSpace。我们可以利用ColorSpace将一个颜色模式抓换成另一个颜色模式。这点也好理解:你把一副彩色图片复制到灰度图片上,图片就是一个灰色的图片。

ColorSpace作用:
1.用做一个颜色空间标记,标识 Color 对象的特定颜色空间。
2.通过 ColorModel 对象标识 Image、BufferedImage 或 GraphicsDevice 的特定颜色空间。
3.将指定颜色空间中的颜色与 sRGB 和定义良好的 CIEXYZ 颜色空间中的颜色进行相互转换的方法。

我们已经知道颜色空间(模式)了,现在就看看它怎么使用,首先需要一个类:ColorConvertOp

public class ColorConvertOp extends Object

看名字也知道它的作用了:颜色转换操作类。它的作用就是将一个颜色模式的图片转换为另一个颜色模式的图片。知道了这些我就轻易的将一副彩色(RGB)颜色的图片编程灰色(黑白)颜色的图片,原理就是利用ColorConvertOp将图片编成灰色图片。代码非常简单:
public final BufferedImage getGrayPicture(BufferedImage originalPic) {
		int imageWidth = originalPic.getWidth();
		int imageHeight = originalPic.getHeight();

		BufferedImage newPic = new BufferedImage(imageWidth, imageHeight,
				BufferedImage.TYPE_3BYTE_BGR);

		ColorConvertOp cco = new ColorConvertOp(ColorSpace
				.getInstance(ColorSpace.CS_GRAY), null);
		cco.filter(originalPic, newPic);
		return newPic;
	}


解析下上面的函数:
首先创建一个图片存储空间newPic,我们定义它的空间类型为:TYPE_3BYTE_BGR(也可以是TYPE_BYTE_GRAY,后者会损失更多的细节),然后利用ColorConvertOp,将一个RGB颜色的图片originalPic转换为灰度图片newPic。得到这个灰度图片newPic后,我们就可以在页面上显示和存储了。
利用BufferedImage.TYPE_3BYTE_BGR存储获得的新图片:

利用BufferedImage.TYPE_BYTE_GRAY存储获得的新图片:


完整的程序代码见附件

文章地址:http://javapub.iteye.com/blog/687082

相关文章
Java图像图片 边缘检测 http://javapub.iteye.com/blog/685468
Java图像变灰 http://javapub.iteye.com/blog/687082
Java 给图片增加 水印图片 水印文字 [url]Java 给图片增加 水印图片 水印文字[/url]
Java图像渐变 http://javapub.iteye.com/blog/736799
Java将大图片转成小图片 http://javapub.iteye.com/blog/666607
6
2
分享到:
评论
2 楼 517913840 2012-12-15  
好文章 顶一个
1 楼 xuan_handsome 2011-08-25  
朋友你知道怎样将这个移植到android中么?  我几乎把整个AWT包的源码都拷贝进去了还是没用,您有办法么?

相关推荐

    java 运用映射的相关类(Map)

    java 运用映射的相关类(Map) java 运用映射的相关类(Map) java 运用映射的相关类(Map)

    java 运用集的相关类(Set)

    java 运用集的相关类(Set) java 运用集的相关类(Set) java 运用集的相关类(Set)

    java 图像处理资源 api

    java图像处理相关api介绍及下载地址

    Java图形图像编程例程

    这是一个中国象棋局面设置相关的综合性的JAVA图型图像处理例程,只有图像处理部分,程序中用到JAVA组件面板绘制和绘制组件背景图等知识,以及中间容器和组合边框的使用。适合初学者学习参考。内含完整的程序源码,...

    【JAVA中级篇】线程池相关类

    【JAVA中级篇】线程池相关类

    数字图像处理:Java编程与实验

    《数字图像处理:Java编程与实验》共16章,除第0章介绍Java...《数字图像处理:Java编程与实验》可供电子信息、通信、计算机、自动控制、生物医学等理工科相关专业的专科生、本科生和研究生及工程技术人员学习和参考。

    数字图像处理:Java语言算法描述

    《数字图像处理:Java语言算法描述》不仅特别适合作为计算机与信息技术类专业的高年级本科生或者研究生教材,对涉及图像处理的相关研究者和开发人员来讲,《数字图像处理:Java语言算法描述》也是一本非常有用的技术...

    JDBC java连接数据库的相关类

    该类实现java对数据库的驱动加载和数据库加载以及关闭对数据库的连接操作

    基于Java图形图像处理的毕业设计,Java图形处理库的使用,图像处理算法的设计和实现 ,图像处理算法的性能评估

    本毕业设计旨在探索并实现一种基于Java图形图像处理的方法,以提高图像处理的速度和精度。该方法将使用Java语言编写,并利用Java图形处理库来实现图像处理。 ## 研究背景 随着计算机技术的发展,图形图像处理在...

    数字图像处理:Java语言算法描述.pdf

    英文版:Digital Image Processing: An Algorithmic ...本书不仅特别适合作为计算机与信息技术类专业的高年级本科生或者研究生教材,对涉及图像处理的相关研究者和开发人员来讲,本书也是一本非常有用的技术参考书

    数字图像处理-Java编程与实验 配套光盘

    本书一共16章,除第0章介绍Java编程基础外,其余15章对应地编程实现了配套书《数字图像处理—原理与算法》中的所有算法,并进行相应的实验。光盘中有完解的程序代码和和应的实验图像,可直接运行。部分程序源代码...

    JAVA_API1.6文档(中文)

    java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,...

    Java的文件处理相关工具类

    提供java中对文件类的各种基本操作,主要包括获取文件的后缀名称,读取文件内容,写入文件内容,拷贝文件,将文件转换为二进制数组等操作,转换为Blob格式类等操作

    Java实现的进制转换工具类完整示例

    主要介绍了Java实现的进制转换工具类,结合完整实例形式分析了Java实现二进制、十六进制、字符串、数组等相关转换操作技巧,需要的朋友可以参考下

    Java M3G相关类.rar

    Java M3G相关类,Mobile 3D手机游戏图形开发类库示例,M3GCanvas.java、M3GMidlet.java是一个适合初学者学习Java M3G的相关示例代码。

    Java开发工具类

    - QrcodeUtils.java\防止SQL注入和XSS攻击Filter\获取文件绝对路径最后的文件夹名称\加密工具类 - CryptoUtils.java\日期工具类 - DateUtil.java\图片处理工具类 - ImageUtils.java\文件相关操作工具类——FileUtils...

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java图像缩放器

    用java做的图像缩放器。挺好用的。相关知识:ImageIO,BufferedImage,image。

    Java IO处理类的汇总

    Java IO处理类的汇总 总结了JavaIO处理类的代码集

Global site tag (gtag.js) - Google Analytics