如何为android项目生成不同分辨率的图像?

时间:2013-11-21 15:30:32

标签: java android

我有很多具有xhdpi分辨率的图像。现在我需要相同的图像,但在mdpi,ldpi,hdpi resoulution。我认为这个过程可以自动化。那么,生成不同分辨率图像的最佳方法是什么?

5 个答案:

答案 0 :(得分:4)

尝试使用:

http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

这有助于产生资源。希望它有所帮助!

答案 1 :(得分:1)

该过程已经自动化。如果您只提供一种尺寸 - hdpi适用于我 - 那么Android系统将根据其他屏幕分辨率和尺寸的需要调整大小或重新缩放。

不提供不同尺寸图像的缺点是自动调整大小算法可能不如图形设计师那样好。但是,如果您正在寻找非Android算法来进行大小调整,那么谁会说它会比内置算法更好?

我建议在各种设备上尝试一种尺寸,看看你的图形看起来如何。有些图像会比其他图像更好地缩放,因此您可能只需要为少数图像提供倍数。

答案 2 :(得分:0)

不久前,我需要在java中调整Image的大小,我找到了一个非常好的方法,它返回一种bufferedimage,你将不得不使用那个新实例。您可以指定宽度和高度。这是代码:

public BufferedImage resizeImage(final Image image, int width, int height) {
        final BufferedImage bufferedImage = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        final Graphics2D graphics2D = bufferedImage.createGraphics();
        graphics2D.setComposite(AlphaComposite.Src);
        graphics2D.drawImage(image, 0, 0, width, height, null);
        graphics2D.dispose();

        return bufferedImage;
    }

答案 3 :(得分:0)

只需以更高的分辨率(如xhdpi或hdpi)放入1张图像并将其用于所有比例效果不高,因为当android调整大小以适应时,它仍然将原始大小的图像加载到内存中,因此如果你在1个活动中有很多错误,这会导致一些滞后或outOfMemory错误。

我会使用谷歌推荐的位图图像加载器。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#decodeSampledBitmapFromResource

这使您可以拍摄图像,并且会调整图像大小,同时仅将新图像尺寸加载到内存中。如果你想要“延迟加载”,这也是你想要做的方法。

答案 4 :(得分:0)

我选择处理所有drawables的解决方案如下:

1-在应用项目的/ etc文件夹中以高分辨率放置所有可绘制的内容。 对于高分辨率,我选择了默认分辨率(mdpi)的10倍。因此,例如发射器图标drawables(48dip x 48dip,其中mdpi为48 x 48像素)将是480 x 480像素。 我在/ etc文件夹中有高分辨率的所有drawable。

2-在构建时,我的ant脚本将从/ etc中获取所有drawable,并调整它们以填充所有/ res / drawables- *文件夹。 从100%大小的高分辨率,各种分辨率大小将是:ldpi:7.5%,mdpi:10%,hdpi:15%,xhdpi:20%,xxhdpi:30%

我使用ant发起的外部程序来实际调整大小。