`

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的图像分割(数字图像处理)

    在Java中,可以使用BufferedImage类将RGB图像转换为灰度图像,转换公式通常为:灰度 = 0.299 * R + 0.587 * G + 0.114 * B。灰度图像处理简化了图像数据,有利于后续的图像分析和处理。 4. **直方图分析**: 直方...

    图像识别与处理Java代码.rar_java 图像处理_java图像处理_java图像识别_java源代码_图像识别

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

    javajava图形与图像处理.pptx

    Java提供了多种方式来描绘图形和图像,包括使用Graphics类、Graphics2D类和Canvas类等。Graphics类提供了绘图方法,如drawLine、drawRect、drawOval、drawArc等,可以画出各种图形。Graphics2D类提供了更多的绘图...

    Java图像文件的缩小与放大源码

    本篇将深入探讨如何利用Java来实现图像的缩放功能,并提供相关的源码示例。 首先,Java中的`java.awt.image`包提供了处理图像的类和接口,如`BufferedImage`用于表示内存中的图像,`ImageIO`用于读写图像,以及`...

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

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

    基于JAVA的图像处理

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

    abc.rar_java 水印_watermark java_图像处理_图像识别java

    在Java编程领域,图像处理和水印添加是两个重要的知识点,...开发者可以通过这个程序学习如何在Java中处理图像,添加水印,并理解相关API的使用。如果需要更深入的图像识别功能,可能还需要了解和使用额外的第三方库。

    Java图形图像编程例程

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

    Java图像编程实例

    2. **ImageIO 类**: Java的`javax.imageio.ImageIO` 类是用于读取、写入和处理图像的标准化接口。你可以用它来读取多种格式的图像文件(如JPEG、PNG等),并将其转换为`BufferedImage` 对象进行进一步处理。 3. **...

    \Java基础类 \Java基础类

    Java基础类是Java编程中的核心组成部分,主要涵盖了Java标准库中的各种基础类和接口,用于构建复杂的GUI(图形用户界面)应用...参考文献如《The Java Tutorial》等资源,可以帮助深入学习和掌握Java基础类的相关知识。

    java 图片旋转、翻转、镜像处理

    在Java编程语言中,处理图像是一项常见的任务,包括图片的旋转、翻转和镜像操作。这些功能在很多场景下都很实用,例如照片编辑、图像处理应用或是网页开发。本篇将详细介绍如何使用Java实现这些功能,并以`ImgRotate...

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

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

    java读写图像.pdf

    Java读写图像涉及到Java I/O库中处理图像读写的具体实现,这些实现通过ImageIO类和ImageReader、ImageWriter接口进行操作。本文将详细介绍如何利用Java Image I/O API在Java程序中进行图像的读取和保存。 首先,...

    java_ImageViewer.rar_image_imageviewer.ja_java viewer_图像浏览_图像浏览器

    Java 图像浏览器是一种基于Java编程语言的简单应用,主要用于在用户界面中查看和浏览图像文件。这个名为"java_ImageViewer.rar"的压缩包包含了实现这一功能的基本代码和相关资源。其中,`ImageViewer.java`是主要的...

    JAVA28个常用工具类

    6. **PinyinUtil.java**: 汉字转拼音工具类,用于将汉字转换为拼音,对于搜索、排序或者生成拼音相关的功能非常有用。这类工具类通常需要依赖第三方库,如Apache Commons Lang的`Pinyin4j`。 7. **CryptoUtils.java...

    java-web方式演示opencv图像处理的相关知识.zip

    Java Web与OpenCV结合进行图像处理是一门技术性较强的领域,涉及到多个知识点。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,广泛应用于图像处理、机器学习和计算机视觉等多个方面。...

    在Java中如何利用Applet来加载图像

    本篇文章将详细探讨如何在Java Applet中加载图像,以及涉及到的相关接口、方法和技巧。 首先,为了在Applet中加载和显示图像,我们需要引入相关的Java包和接口。关键的包包括`java.awt.image`和`java.net`,其中`...

    java编写的图像处理程序+源代码+文档

    本资源包包含了使用Java编写的图像处理程序,以及相关的源代码和文档,旨在帮助学习者或开发者深入理解和实践图像处理技术。 首先,我们来探讨一下Java在图像处理中的基础概念。Java提供了`java.awt.image`和`javax...

    数字图像处理教学演示平台-数字图像处理教学演示平台java代码-基于ssm的数字图像处理教学演示平台-ssm项目-java代码

    数字图像处理教学演示-数字图像处理教学演示平台-数字图像处理教学演示平台源码-数字图像处理教学演示平台java代码-数字图像处理教学演示平台设计与实现-基于ssm的数字图像处理教学演示平台-基于Web的数字图像处理...

    java 常用类.ppt

    java 常用类 ppt 字符串相关类 基本数据包装类 Math类 File类

Global site tag (gtag.js) - Google Analytics