一张图片,怎么把它表示图像的像素数组输出啊?
望提供代码示例。

解决方案 »

  1.   

    参考一下 Image 对象。
      

  2.   

    用BufferedImage的getRGB方法
    BufferedImage imd=ImageIO.read(new File(file));
    public int[] getRGB(int startX,
                        int startY,
                        int w,
                        int h,
                        int[] rgbArray,
                        int offset,
                        int scansize)从图像数据的某一部分返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中整数像素数组。如果该默认模型与该图像的 ColorModel 不匹配,则发生颜色转换。在使用此方法所返回的数据中,每个颜色分量只有 8 位精度。通过图像中指定的坐标 (x, y),ARGB 像素可以按如下方式访问:     pixel   = rgbArray[offset + (y-startY)*scansize + (x-startX)]; 如果该区域不在边界内部,则抛出 ArrayOutOfBoundsException。但是,不保证进行显式的边界检查。 
    参数:
    startX - 起始 X 坐标
    startY - 起始 Y 坐标
    w - 区域的宽度
    h - 区域的高度
    rgbArray - 如果不为 null,则在此写入 rgb 像素
    offset - rgbArray 中的偏移量
    scansize - rgbArray 的扫描行间距 
    返回:
    RGB 像素数组。
      

  3.   

    顶楼3,用流的形式显示出来好些,BufferedImage
      

  4.   

    谢谢守望者。实现代码如下:import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;import javax.imageio.ImageIO;public class BufferedImageTest {
    public static void main(String[] args) {
    BufferedImage bi = null;
    try {
    bi = ImageIO.read(new File("src\\s.png"));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } int[] imgRgb = bi.getRGB(0, 0, 10, 10, null, 0, 10);
    System.out.println(imgRgb.length);
    for (int i = 0; i < imgRgb.length; i++) {
    if (i % 10 == 0) {
    System.out.println();
    }
    System.out.print(imgRgb[i] + ", ");
    }
    }
    }
      

  5.   

    key.png
    是一张10 * 10 piex的图片。
      

  6.   


    key.png →  s.png