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

Java 如何为android项目生成不同分辨率的图像?,java,android,Java,Android,我有很多xhdpi分辨率的图像。现在,我需要相同的图像,但在mdpi,ldpi,hdpi资源。我认为这个过程可以自动化。那么,生成不同分辨率图像的最佳方法是什么 尝试使用: 这对生成资源有很大帮助。希望有帮助 尝试使用: 这对生成资源有很大帮助。希望有帮助 不久前,我需要在java中调整图像的大小,我发现了一个非常好的方法,它返回一种类型的BuffereImage,您必须使用该新实例。你可以指定你的宽度和高度。代码如下: public BufferedImage resizeImage(fi

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

尝试使用:

这对生成资源有很大帮助。希望有帮助

尝试使用:


这对生成资源有很大帮助。希望有帮助

不久前,我需要在java中调整图像的大小,我发现了一个非常好的方法,它返回一种类型的BuffereImage,您必须使用该新实例。你可以指定你的宽度和高度。代码如下:

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;
    }

不久前,我需要在java中调整图像的大小,我发现了一个非常好的方法,它返回一种类型的BuffereImage,您必须使用这个新实例。你可以指定你的宽度和高度。代码如下:

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;
    }

这个过程已经自动化了。如果你只提供一种尺寸——hdpi适合我——那么Android系统将根据需要调整其大小,以适应其他屏幕分辨率和尺寸

不提供不同大小的图像的缺点是,自动调整大小算法可能不如图形设计师做得好。然而,如果你正在寻找一种非Android的算法来调整大小,谁说它会比内置算法更好呢


我建议在各种设备上尝试一种尺寸,看看你的图形是什么样子。有些图像比其他图像的缩放效果更好,因此您可能只需要为少数图像提供倍数。

该过程已经自动化。如果你只提供一种尺寸——hdpi适合我——那么Android系统将根据需要调整其大小,以适应其他屏幕分辨率和尺寸

不提供不同大小的图像的缺点是,自动调整大小算法可能不如图形设计师做得好。然而,如果你正在寻找一种非Android的算法来调整大小,谁说它会比内置算法更好呢


我建议在各种设备上尝试一种尺寸,看看你的图形是什么样子。有些图像比其他图像的缩放效果更好,因此您可能只需要为少数图像提供倍数。

只需以更高的分辨率(如xhdpi或hdpi)输入一幅图像,并对所有图像进行缩放并不是很有效,因为安卓确实会根据需要调整图像大小,但它仍在将原始大小的图像加载到内存中,因此,如果在1个活动中有很多内存错误,这将导致一些延迟或outOfMemory错误

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


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

只需以更高的分辨率(如xhdpi或hdpi)输入一幅图像,并且对所有比例都使用这种方法是没有效率的,因为虽然安卓确实调整了图像大小以适应,但它仍在将原始大小的图像加载到内存中,因此,如果在1个活动中有很多内存错误,这将导致一些延迟或outOfMemory错误

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


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

我选择的处理所有可绘图项的解决方案如下所示:

1-在应用程序项目的/etc文件夹中以高分辨率显示所有绘图。 对于高分辨率,我选择了默认分辨率(mdpi)的10倍。例如,launcher图标可绘制(48dip x 48dip,在mdpi中是48 x 48像素)将是480 x 480像素。 我在/etc文件夹中有我所有的高分辨率绘图

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


我使用ant启动的一个外部程序来实际调整大小。

我选择的解决方案是处理我的所有可绘图项:

1-在应用程序项目的/etc文件夹中以高分辨率显示所有绘图。 对于高分辨率,我选择了默认分辨率(mdpi)的10倍。例如,launcher图标可绘制(48dip x 48dip,在mdpi中是48 x 48像素)将是480 x 480像素。 我在/etc文件夹中有我所有的高分辨率绘图

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


我使用ant启动的一个外部程序来实际调整大小。

谢谢,它真的很有用,请不要激活。谢谢,它真的很有用,请不要激活。