高分求教,我把一个image对象打成了int[],但是我怎么把这个int[]再专成image呢!?
我用如下的方法作的,但是生成的是图片时一片漆黑。
其中tempImage就是这个像素数组。
MemoryImageSource ms=new MemoryImageSource(292,171,java.awt.image.ColorModel.getRGBdefault(),tempImage,0,1);
Toolkit tk=Toolkit.getDefaultToolkit();
Image img=tk.createImage((ImageProducer)ms); //我这样强专行么?
if (img!=null) {
System.out.println("Yeah!Image isn't null");
}
BufferedImage bimg=new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
bimg.createGraphics().drawImage(img,0,0,null);
这样出来后,生成的图片是一团的漆黑!是img错误,还是bimg错误!
请高手指正!
希望能有源码!谢谢了!
问题点数:100、回复次数:7Top
1 楼LoveRose(旺旺)回复于 2003-11-03 15:02:26 得分 0
MemoryImageSource ms=new MemoryImageSource(292,171,java.awt.image.ColorModel.getRGBdefault(),tempImage,0,1);
应该是这个的问题Top
2 楼renlinan(衍生类)回复于 2003-11-03 16:40:47 得分 0
为什么呢!?望进一步指正!Top
3 楼LoveRose(旺旺)回复于 2003-11-03 16:47:44 得分 50
jdk文档上有个例子是这样的:
This class is an implementation of the ImageProducer interface which uses an array to produce pixel values for an Image. Here is an example which calculates a 100x100 image representing a fade from black to blue along the X axis and a fade from black to red along the Y axis:
int w = 100;
int h = 100;
int pix[] = new int[w * h];
int index = 0;
for (int y = 0; y < h; y++) {
int red = (y * 255) / (h - 1);
for (int x = 0; x < w; x++) {
int blue = (x * 255) / (w - 1);
pix[index++] = (255 << 24) | (red << 16) | blue;
}
}
Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
Top
4 楼renlinan(衍生类)回复于 2003-11-03 17:32:43 得分 0
不是这个的问题!我试过了!因为我是在consle程序里面把它专成image对象的所以我怀疑是toolkit的问题,因为我觉得如果在applet中的话,默认的就有createimage方法,但是在consle程序里面就没有这个createimage()方法,只能用toolkit。会不会是这个的问题!?Top
5 楼yayv(yayv)回复于 2003-11-03 21:38:55 得分 50
我试过你的代码了,用的就是你的代码和MemoryImageSource中的代码,没有问题呀。
Top
6 楼renlinan(衍生类)回复于 2003-11-04 09:33:39 得分 0
to: yayv(yayv)
但是我从生成的image,专成文件的时候怎么回事一片漆黑呢!我在本地试的时候,因为没有把image打成int[],直接把image保存成文件就没有问题,但是一旦打成int[]在专成image就有问题了!声称的图片一片漆黑!
Top
7 楼renlinan(衍生类)回复于 2003-11-04 12:15:43 得分 0
谢谢大家,我的问题解决了!Top




