package work;
import javaawtGraphicsD;
import javaawtRenderingHints;
import lorColorSpace;
import javaawtimageBufferedImage;
import javaawtimageColorConvertOp;
import javaioFile;
import javaioIOException;
import javaximageioImageIO;
public class Gray {
public static void main(String[] args) throws IOException
{
BufferedImage transforImage;
BufferedImage finalImage;
TransGray gray=new TransGray();
transforImage=graysrcImage;
finalImage=graytransformGrayJD(transforImagenull);//这里可能有问题关于RenderingHints的取值不是很清楚
File f=new File(f:/graychangejpg);//新图像输出
ImageIOwrite(finalImagejpgf);
Systemoutprintln(End);
}
}
class TransGray
{
int width;
int height;
BufferedImage srcImage;
public TransGray() throws IOException
{
File file =new File(F:/jpg);
srcImage =ImageIOread(file);
width=srcImagegetWidth();
height=srcImagegetHeight();
}
public BufferedImage transformGrayJD(BufferedImage srcImageRenderingHints hints) {
BufferedImage dstImage = new BufferedImage(srcImagegetWidth() srcImagegetHeight() srcImagegetType());
if (hints == null ) {
GraphicsD g = dstImagecreateGraphics();
hints = ggetRenderingHints();
gdispose();
g = null ;
}
ColorSpace grayCS = ColorSpacegetInstance(ColorSpaceCS_GRAY);//此抽象类用做一个颜色空间标记标识 Color 对象的特定颜色空间或者通过 ColorModel 对象标识 ImageBufferedImage 或 GraphicsDevice 的特定颜色空间此类包含了可将指定颜色空间中的颜色与 sRGB 和定义良好的 CIEXYZ 颜色空间中的颜色进行相互转换的方法
ColorConvertOp colorConvertOp = new ColorConvertOp(grayCS hints);//此类对源图像中的数据执行逐像素的颜色转换得到的颜色值可以扩展到目标图像的精度颜色转换可以通过 ColorSpace 对象的数组或 ICC_Profile 对象的数组指定
colorConvertOpfilter(srcImage dstImage);// 对源 BufferedImage 进行颜色转换
return dstImage;
}
}