life02

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  197 随笔 :: 3 文章 :: 37 评论 :: 0 Trackbacks
用Java进行图像处理,会遇到ColorSpace这个类:ColorSpace
Java代码  收藏代码
  1. public abstract class ColorSpace extends Object implements Serializable  

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

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

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

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

Java代码  收藏代码
  1. public class ColorConvertOp extends Object  

看名字也知道它的作用了:颜色转换操作类。它的作用就是将一个颜色模式的图片转换为另一个颜色模式的图片。知道了这些我就轻易的将一副彩色(RGB)颜色的图片编程灰色(黑白)颜色的图片,原理就是利用ColorConvertOp将图片编成灰色图片。代码非常简单:
Java代码  收藏代码
  1. public final BufferedImage getGrayPicture(BufferedImage originalPic) {  
  2.         int imageWidth = originalPic.getWidth();  
  3.         int imageHeight = originalPic.getHeight();  
  4.   
  5.         BufferedImage newPic = new BufferedImage(imageWidth, imageHeight,  
  6.                 BufferedImage.TYPE_3BYTE_BGR);  
  7.   
  8.         ColorConvertOp cco = new ColorConvertOp(ColorSpace  
  9.                 .getInstance(ColorSpace.CS_GRAY), null);  
  10.         cco.filter(originalPic, newPic);  
  11.         return newPic;  
  12.     }  
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
posted on 2012-03-15 13:29 life02 阅读(563) 评论(0)  编辑 收藏 引用 所属分类: Android开发

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理