java

位置:IT落伍者 >> java >> 浏览文章

java实现彩色图转变为灰度图


发布日期:2019年04月16日
 
java实现彩色图转变为灰度图

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;

}

}

               

上一篇:从根本上改变我们开发Java程序的方式:Lambda

下一篇:2004开发技术年度综述之Java世界