package  test ; import  java. awt.  Color ; 
import  java. awt. image.  BufferedImage ; 
import  java. io.  File ; 
import  java. io.  FileOutputStream ; 
import  java. io.  IOException ; 
import  java. io.  OutputStream ; import  javax. imageio.  ImageIO ; public  class  MyImage  { public  static  void  analyseRGB ( String  filePath,  String  newFilePath,  int  type)  { OutputStream  output =  null ; try  { BufferedImage  img =  ImageIO . read ( new  File ( filePath) ) ; int  imageType =  img. getType ( ) ; int  width =  img. getWidth ( ) ; int  height =  img. getHeight ( ) ; int  startX =  0 ; int  startY =  0 ; int  offset =  0 ; int  scansize =  width; int  dd =  width -  startX; int  hh =  height -  startY; int  x0 =  width /  2 ; int  y0 =  height /  2 ; System . out. println ( "dd:"  +  dd +  " hh:"  +  hh) ; System . out. println ( "width:"  +  width +  " height:"  +  height) ; System . out. println ( "imageType:"  +  imageType) ; System . out. println ( "size:" + ( offset +  hh *  scansize +  dd) ) ; int [ ]  rgbArray =  new  int [ offset +  hh *  scansize +  dd] ; int [ ]  newArray =  new  int [ offset +  hh *  scansize +  dd] ; img. getRGB ( startX,  startY,  width,  height,  rgbArray,  offset, scansize) ;  int  count= 0 ; for ( int  i :  rgbArray) { System . out. println ( i) ; if ( i!= 0 ) { count= count+ 1 ; } } System . out. println ( count) ; int  rgb =  rgbArray[ offset +  ( y0 -  startY)  *  scansize+  ( x0 -  startX) ] ;  Color  c =  new  Color ( rgb) ; System . out. println ( "中间像素点的rgb:" + c) ; for  ( int  i =  0 ;  i <  height -  startY;  i++ )  { for  ( int  j =  0 ;  j <  width -  startX;  j++ )  { c =  new  Color ( rgbArray[ offset+ i *  scansize +  j] ) ; switch  ( type)  { case  1 : / / 红色灰度图片newArray[ i* dd +  j]  =  new  Color ( c. getRed ( ) ,  0 ,  0 ) . getRGB ( ) ; break ; case  2 : / / 绿色灰度图片newArray[ i* dd +  j]  =  new  Color ( 0 ,  c. getGreen ( ) ,  0 ) . getRGB ( ) ;  break ; case  3 : / / 蓝色灰度图片newArray[ i *  dd +  j]  =  new  Color ( 0 ,  0 ,  c. getBlue ( ) ) . getRGB ( ) ; break ; default : break ; } } } File  out =  new  File ( newFilePath) ; if  ( ! out. exists ( ) ) out. createNewFile ( ) ; output =  new  FileOutputStream ( out) ; BufferedImage  imgOut =  new  BufferedImage ( width,  height, BufferedImage . TYPE_3BYTE_BGR) ; imgOut. setRGB ( startX,  startY,  width,  height,  newArray,  offset, scansize) ; ImageIO . write ( imgOut,  "jpg" ,  output) ; }  catch  ( IOException  e)  { e. printStackTrace ( ) ; } } 
}