此代码用于以缩略图格式显示图像。当一个图像包含1600 x 1200以上的尺寸时,我遇到了一个问题(内存不足(。我使用的是40系列和60系列J2ME手机。
请帮我解决我的问题,谢谢
这是我的代码:
int sourceWidth = image.getWidth();
int sourceHeight = image.getHeight();
int thumbWidth = width;
int thumbHeight = height;
if (thumbHeight == -1)
thumbHeight = thumbWidth * sourceHeight / sourceWidth;
Image thumb = Image.createImage(thumbWidth, thumbHeight);
Graphics graph = thumb.getGraphics();
for (int y = 0; y < thumbHeight; y++) {
for (int x = 0; x < thumbWidth; x++) {
graph.setClip(x, y, 1, 1);
int dx = x * sourceWidth / thumbWidth;
int dy = y * sourceHeight / thumbHeight;
graph.drawImage(image, x - dx, y - dy, Graphics.TOP | Graphics.LEFT);
}
}
Image immutableThumb = Image.createImage(thumb);
return immutableThumb;
你能避免一次加载整个图像吗?
你能把图像分割成四个800x600的图像,然后创建四个320x240的迷你缩略图并排显示吗?
如果4仍然不起作用,试试16。
只要准备好调用Image.createImage((来触发垃圾收集暂停即可。
许多相机在图片的exif数据中保存缩略图,因此相机可以快速显示缩略图,而不需要缩小全尺寸图像。
从理论上讲,这项技术在JavaME中也是可行的,如果你在谷歌上搜索,你可以找到很多关于如何做到这一点的指南:http://www.google.com/#q=j2me+exif+缩略图
不过,我必须承认,当我尝试它的时候,我从来没有成功过,我想它是在索尼爱立信Aino上。一个问题是(和往常一样,几乎无论你看什么话题(不同的公司做这件事的方式不同。这自然使得实现通用的"处处可用代码"变得相当困难。