当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
计算机二级辅导:java实现彩色图转变为灰度图
发布时间:2010/4/5 17:33:44 来源:城市学习网 编辑:admin
  package work;
  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 Gray {
  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("f:/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("F:/2.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;
  }
  }
  package work;
  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 Gray {
  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("f:/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("F:/2.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;
  }
  :
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved