[图像处理] Java图像变灰 及相关类ColorSpace,ColorConvertOp
javapub
2010-06-21
用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 |
相关讨论
相关资源推荐
- C# TreeView重绘边框
- 自定义TreeView,多列带有标头,支持多选绑定,带有虚拟化技术
- Winform 使用graphics在treeview上绘图
- C# :Krypton旗下扩展控件TreeGridView的使用方法
- C#美化Treeview控件,增加节点多选功能
- Winform中TreeView中部分节点前面的CheckBox隐藏
- Treeview失去焦点高亮度显示
- C# winform treeview 刷新前,记录上次折叠情况,刷新后,恢复到上次情况
- 重写TreeView,自定义图标,生成通行的下划线,取消默认获得焦点失去焦点的效果,并支持拖拽节点到外界...
- WPF控件之TreeView扩展应用(一)