我编了这个程序想读入一个图片并转换为灰度图输出保存,但是我转换得到的图形总是上半部分是灰度,下半部分是全黑的,但是我不知道问题出在哪,请大家指教,谢谢。import javax.imageio.*;
import java.awt.image.*;
import java.io.File;
public class readandwrite {
  public readandwrite() {
  try {
 BufferedImage bi;
 String currentFileName="C:\\Documents and Settings\\Administrator\\桌面\\my.png";
 File file = new File (currentFileName);
 bi=ImageIO.read(file);
 int height=bi.getHeight();
 int width=bi.getWidth();
 int[] ImageArray = new int[width*height];
 int[] ImageDestination = new int[width*height];
 ImageArray = bi.getRGB(0,0,width,height,ImageArray,0,width);
     //得到默认的颜色模型
 ColorModel colorModel=ColorModel.getRGBdefault();
   int i ,j,k,r,g,b;
   for(i = 0; i < height;i++)
  {
for(j = 0;j < width;j++)
{
//定位像素点
k = i * height+j;
r = colorModel.getRed(ImageArray[k]);
g = colorModel.getGreen(ImageArray[k]);
b = colorModel.getBlue(ImageArray[k]);
 //此处可添加对R、G、B值进行调整的代码
 int gray=(int)(r*0.3+g*0.59+b*0.11);
  r=g=b=gray;//将R、G值左移,并保存RGB值
  ImageDestination[k]=gray;}
}    // BufferedImage outimage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
     bi.setRGB(0,0,width,height,ImageDestination,0,width);
String FileName="C:\\Documents and Settings\\Administrator\\桌面\\gray.png";
 File fileout = new File (FileName);
 String format = "PNG";
 ImageIO.write(bi,format,fileout);//将图片保存为jpeg格式的文件file。也可以保存为jpg格    } catch(Exception e) {
        e.printStackTrace();
      }
    }
public static void main(String args[]) {
  readandwrite es=new readandwrite();
}}