熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

java實現彩色圖轉變為灰度圖

2013-11-23 19:21:03  來源: 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;

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26706.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.