用Java進(jìn)行圖像處理,會(huì)遇到ColorSpace這個(gè)類:
ColorSpace Java代碼


- public abstract class ColorSpace extends Object implements Serializable
這個(gè)類的作用用官方語言就是就很困惑了,我這里舉一個(gè)例子大家就明白這個(gè)類是做什么的了,大家利用Photoshop新建一副圖片的時(shí)候都要選擇“顏色模式”
圖片中的“顏色模式”就是我們這里的ColorSpace。我們可以利用ColorSpace將一個(gè)顏色模式抓換成另一個(gè)顏色模式。這點(diǎn)也好理解:你把一副彩色圖片復(fù)制到灰度圖片上,圖片就是一個(gè)灰色的圖片。
ColorSpace作用: 1.用做一個(gè)顏色空間標(biāo)記,標(biāo)識(shí) Color 對(duì)象的特定顏色空間。
2.通過 ColorModel 對(duì)象標(biāo)識(shí) Image、BufferedImage 或 GraphicsDevice 的特定顏色空間。
3.將指定顏色空間中的顏色與 sRGB 和定義良好的 CIEXYZ 顏色空間中的顏色進(jìn)行相互轉(zhuǎn)換的方法。
我們已經(jīng)知道顏色空間(模式)了,現(xiàn)在就看看它怎么使用,首先需要一個(gè)類:
ColorConvertOp Java代碼


- public class ColorConvertOp extends Object
看名字也知道它的作用了:顏色轉(zhuǎn)換操作類。它的作用就是將一個(gè)顏色模式的圖片轉(zhuǎn)換為另一個(gè)顏色模式的圖片。知道了這些我就輕易的將一副彩色(RGB)顏色的圖片編程灰色(黑白)顏色的圖片,原理就是利用ColorConvertOp將圖片編成灰色圖片。代碼非常簡(jiǎn)單:
Java代碼


- 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;
- }
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; }
解析下上面的函數(shù):
首先創(chuàng)建一個(gè)圖片存儲(chǔ)空間newPic,我們定義它的空間類型為:TYPE_3BYTE_BGR(也可以是TYPE_BYTE_GRAY,后者會(huì) 損失更多的細(xì)節(jié)),然后利用ColorConvertOp,將一個(gè)RGB顏色的圖片originalPic轉(zhuǎn)換為灰度圖片newPic。得到這個(gè)灰度圖片 newPic后,我們就可以在頁面上顯示和存儲(chǔ)了。
利用BufferedImage.TYPE_3BYTE_BGR存儲(chǔ)獲得的新圖片:
利用BufferedImage.TYPE_BYTE_GRAY存儲(chǔ)獲得的新圖片:
完整的程序代碼見附件
文章地址:
http://javapub.iteye.com/blog/687082 相關(guān)文章
Java圖像圖片 邊緣檢測(cè) 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將大圖片轉(zhuǎn)成小圖片 http://javapub.iteye.com/blog/666607