JAvaカラー画像をグレーに変更

2216 ワード

package com.test;

import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class DecimalFormatDemo {
	
	public static void main(String[] args) throws IOException {

		BufferedImage transforImage;

		BufferedImage finalImage;

		TransGray gray = new TransGray();

		transforImage = gray.srcImage;

		finalImage = gray.transformGrayJ2D(transforImage, null);//        ,  RenderingHints        

		File f1 = new File("d:/2graychange.jpg");//      

		ImageIO.write(finalImage, "jpg", f1);

		System.out.println("End");
	}

}

class TransGray {
	int width;
	int height;
	BufferedImage srcImage;

	public TransGray() throws IOException {
		File file = new File("d:/uuuu2.jpg");
		srcImage = ImageIO.read(file);
		width = srcImage.getWidth();
		height = srcImage.getHeight();
	}

	public BufferedImage transformGrayJ2D(BufferedImage srcImage,
			RenderingHints hints) {

		BufferedImage dstImage = new BufferedImage(srcImage.getWidth(),
				srcImage.getHeight(), srcImage.getType());

		if (hints == null) {

			Graphics2D g2 = dstImage.createGraphics();

			hints = g2.getRenderingHints();

			g2.dispose();

			g2 = null;

		}

		ColorSpace grayCS = ColorSpace.getInstance(ColorSpace.CS_GRAY);//               ,  
																		// Color
																		//          ,    
																		// ColorModel
																		//     
																		// Image、BufferedImage
																		//  
																		// GraphicsDevice
																		//        。                  
																		// sRGB
																		//       
																		// CIEXYZ
																		//                  。

		ColorConvertOp colorConvertOp = new ColorConvertOp(grayCS, hints);//                     。                  。        
																			// ColorSpace
																			//       
																			// ICC_Profile
																			//        。

		colorConvertOp.filter(srcImage, dstImage);//    BufferedImage       

		return dstImage;
	}

}