如何减小要在J2ME中使用snapShot显示的图像的尺寸(1600x1200到640 x 480或小于该尺寸)



此代码用于以缩略图格式显示图像。当一个图像包含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上。一个问题是(和往常一样,几乎无论你看什么话题(不同的公司做这件事的方式不同。这自然使得实现通用的"处处可用代码"变得相当困难。

相关内容

  • 没有找到相关文章

最新更新