`

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代码.rar_java 图像处理_java图像处理_java图像识别_java源代码_图像识别

    在图像识别与处理领域,Java作为一种跨平台的...通过学习和实践这些代码,开发者不仅可以掌握基础的Java图像处理技术,还可以了解如何在Java环境中实现复杂的图像识别算法,为从事相关领域的开发工作打下坚实的基础。

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    java图像处理实例

    在Java编程语言中,图像处理是一项重要且实用的技能,特别是在开发图形用户界面(GUI)应用、游戏或者数据可视化项目时。本实例主要探讨如何利用Java进行图像...这些知识对于Java开发者在处理图像相关任务时非常实用。

    java图像处理之--白色变透明

    我们将探讨Java中的AWT和Swing库提供的`java.awt.image.BufferedImage`类以及相关的图像处理方法,以实现这一功能。 首先,我们需要理解`BufferedImage`类。它是Java标准库中的核心图像处理类,提供了丰富的功能,...

    图像处理代码---java实现

    在"Java图像处理"这个项目中,你可能找到了实现这些功能的源代码,通过阅读和理解这些代码,你可以深入学习图像处理的基本原理和Java编程技巧,这对于开发图像处理应用或者进行相关的研究都非常有帮助。同时,这些...

    基于JAVA的图像处理

    Java中的`BufferedImage`类是处理图像的核心对象,它允许开发者直接访问和修改图像的像素值。`ColorModel`和`MemoryImageSource`等类则提供了颜色模型管理和内存中图像源的控制。`PixelGrabber`用于从图像中抓取像素...

    图像传输java

    下面将详细介绍如何使用Java实现图像的压缩和传输,以及涉及的相关知识点。 1. **图像压缩**: - **JPEG压缩**:Java支持JPEG格式的图像压缩,通过`javax.imageio.ImageIO`类的`write`方法,可以将图像写入JPEG...

    Java图像滤波器实现

    在Java中实现这两种滤波器,首先需要读取图像数据,这可以通过Java的`java.awt.image.BufferedImage`类完成。接着,可以创建自定义的滤波器类,其中包含处理图像的逻辑。对于中值滤波,可能需要使用数组或队列来暂存...

    Java图形图像编程例程

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

    java编写的图像处理程序,java做图像处理,Java源码.zip

    如果你对图像处理有深入需求,可以研究一下JAI的`java.awt.image`包,以及相关的开源库。例如,`BufferedImageOp`接口和它的实现类可以用来执行各种图像操作,如模糊、锐化、阈值处理等。 压缩包中的源码可能涵盖了...

    Java 图像文字识别

    本文将深入探讨Java如何与`tesseract-ocr`结合进行图像文字识别,并分享相关的知识和实践技巧。 一、tesseract-ocr引擎简介 `tesseract-ocr`是由Google维护的一个开源OCR引擎,拥有超过30年的历史,支持多种语言,...

    java 如何放大及拉伸图像

    综上所述,Java通过`BufferedImage`、`Graphics2D`和相关的图像处理类提供了强大的图像操作能力,能够方便地实现图像的放大和拉伸,从而满足各种图像处理需求。通过学习和实践这些知识点,开发者可以灵活地处理GUI...

    java图片处理类-java课程设计

    Java图片处理类是Java编程语言中用于操作和处理图像文件的核心技术,主要涉及Java的AWT(Abstract Window Toolkit)和Swing库。在Java课程设计中,学生通常会被要求掌握这些概念并应用到实际项目中,例如创建一个...

    Java图像处理必读的基础知识.docx

    `BufferedImage`是Java中的核心图像处理类之一,它继承自`Image`类,用于表示包含像素数据的图像。`BufferedImage`对象不仅可以存储图像数据,还可以存储关于图像的元数据,比如颜色模型和图像的尺寸等。 **组织...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举类在Java中用于定义一组相关的固定数量的值,这些值通常代表常量。例如: ```java public enum Color { RED, GREEN, BLUE } ``` 在这个例子中,`Color`枚举定义了三个常量:`RED`,`GREEN`和`BLUE`。 现在,...

    JAVA_API1.6文档(中文)

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

    数字图像处理软件 JAVA实现 有界面 附源码 图像增强 图像分割 图像变换

    总之,这个项目提供了一个全面的数字图像处理实践平台,对于学习和开发相关应用的JAVA程序员来说,是一个极具价值的资源。它不仅包含实际运行的软件,还有源码供深入研究,对于提升图像处理技能和理解JAVA编程有极大...

    数字图像处理——Java语言实现王宏, 赵海滨编著2005随书光盘映像

    《数字图像处理——Java语言实现》是由王宏和赵海滨两位专家共同编著的一本专业书籍,该书详细探讨了如何使用Java编程语言进行数字图像处理。2005年出版的这本书随书附带了一个光盘映像,其中包含了作者们精心设计的...

    基于JAVA实现的图像特征提取源代码

    4. 第四不变矩(Hu4):与图像的扁平程度相关。 5. 第五不变矩(Hu5):与图像的扭曲度有关。 6. 第六不变矩(Hu6):涉及图像的旋转特性。 7. 第七不变矩(Hu7):综合了前六个矩,提供了额外的形状信息。 Java源...

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

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

Global site tag (gtag.js) - Google Analytics