求使用Java在内存中生成每通道16位/32位的图像,及对其进行操作和显示的方法。使用JAI可以做到么?
我为了进行上述操作正在学习JAI,但是尚不清楚JAI能否进行以上操作,而且因为JAI文档全是英文的原因,进展缓慢。各位是否有一些JAI的中文学习资料,自己简单翻译的也可,希望得到你的帮助。也希望和学习或使用JAI,Java 2D,3D的朋友一起讨论。msn:[email protected]顶有分。

解决方案 »

  1.   

    jai 是什么东西啊?
    “每通道16位/32位的图像” 通道是什么意思啊
      

  2.   

    最近正在研究Java3D 希望和搂住一起进步 [email protected]
    qq 25390347
      

  3.   

    交友。
    msn: [email protected]
      

  4.   

    int red = 0xff << 24 | 0xff << 16;
        int green = 0xff << 24 | 0xff << 8;
        int blue = 0xff << 24 | 0xff;
        
        // 9*10 image
        int[] imageBits = new int[]{
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue,
          red,red,red,green,green,green,blue,blue,blue
        };
        
        MemoryImageSource mis = new MemoryImageSource(9        //image width 
                                                      ,10      //image height
                                                      ,ColorModel.getRGBdefault()  //color model
                                                      ,imageBits    //bits of the image
                                                      ,0            //offset
                                                      ,9);          //scansize
        JFrame f = new JFrame();
        f.setSize(300,300);
        Image img = f.createImage(mis);
        f.getContentPane().add(new JLabel(new ImageIcon(img)));
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.show();
      

  5.   

    XqYuan() :
    可以读到BufferedImage里,它包含一个Raster对象。
      

  6.   

    Color[][] c;//填好的象素颜色数组
                    int[] color = new int[Width * Height];
                      int index = 0;
                    for (int i= 0; i < Height; i++)
                        for (int j = 0; j < Width; j++) {
                           color[index] = c[i][j].getRGB();
                           index++;
                        }
                    image = createImage(new MemoryImageSource(Width, Height, color, 0, Width));
      

  7.   

    BufferedImage image = new BufferedImage(320, 200, BufferedImage.TYPE_INT_RGB);
    //image.setRGB(x, y, color);
    image.setRGB(100, 100, 0xff0000); //在100,100处画一个红点如果你想用一维数组,上面的朋友都给出了答案,使用MemoryImageSource,如果使用二维的,按我上面写的(别死脑筋非要写成int[][]),反正image又没有显示,随便你怎么操作另外你分给得不少,就是问问题没问到点子上,描述不太清楚。http://community.csdn.net/Expert/topic/4171/4171191.xml?temp=.8618738
      

  8.   

    BufferedImage生成的也只是每通道8位,4通道一共也就是32位的图像,
    我需要对每通道16,24或32位的图像进行处理,我要强调的是“每通道”,
    这类似于一些RAW格式的图片。
    我现在可以不考虑如何读取和输出这些图像,只是想现在内存中自己生成这些图像,并对其进行操作。然后再从原始的图像数据中生成每通道8位的可显示图像。
      

  9.   

    bd & gz & jf
    :)
      

  10.   


    试试 ComponentColorModel ,看它能不能定义每通道16 或 32 位的颜色。