求使用Java在内存中生成每通道16位/32位的图像,及对其进行操作和显示的方法。使用JAI可以做到么?
我为了进行上述操作正在学习JAI,但是尚不清楚JAI能否进行以上操作,而且因为JAI文档全是英文的原因,进展缓慢。各位是否有一些JAI的中文学习资料,自己简单翻译的也可,希望得到你的帮助。也希望和学习或使用JAI,Java 2D,3D的朋友一起讨论。msn:[email protected]顶有分。
我为了进行上述操作正在学习JAI,但是尚不清楚JAI能否进行以上操作,而且因为JAI文档全是英文的原因,进展缓慢。各位是否有一些JAI的中文学习资料,自己简单翻译的也可,希望得到你的帮助。也希望和学习或使用JAI,Java 2D,3D的朋友一起讨论。msn:[email protected]顶有分。
解决方案 »
- 这段程序为什么滚动条scrollpane无法出来?
- Double相除,如何只精确到小数点后2为呢
- 多线程处理ArrayList????
- StringBuffer 中append的问题!编译通过,执行报错,救急!
- java编译后运行问题
- 讨论:声明类时,public final class A {}和 public static class A {}有什么不同
- 救命啊~JNI问题~用了很多时间了,还是搞不好~
- 用javamail写了个群发邮件的程序,问题是如果一个收件地址错误,全部邮件都发不出去!?求解决办法
- SOS
- 接口继承类是怎么一回事?
- 跪求各位师哥师姐:JB2005打包问题!我该怎么打包?
- 讨论关于图像过滤的一些问题
“每通道16位/32位的图像” 通道是什么意思啊
qq 25390347
msn: [email protected]
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();
可以读到BufferedImage里,它包含一个Raster对象。
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));
//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
我需要对每通道16,24或32位的图像进行处理,我要强调的是“每通道”,
这类似于一些RAW格式的图片。
我现在可以不考虑如何读取和输出这些图像,只是想现在内存中自己生成这些图像,并对其进行操作。然后再从原始的图像数据中生成每通道8位的可显示图像。
:)
试试 ComponentColorModel ,看它能不能定义每通道16 或 32 位的颜色。