由于图片导致应用程序大小过大。如何压缩 .PNG 图片?

9

我正在开发一个应用程序,由于需要大量操作图片,所以我的应用程序大小变得非常大。我想压缩或者采取类似的方法来减小应用程序的大小。有什么好的想法吗?

5个回答

10

.png 文件放置在 res/drawable 目录下时,将在编译应用程序时被自动优化

在构建过程中,aapt 工具可以通过无损图像压缩自动优化 Bitmap 文件。例如,真彩色 PNG 图片不需要超过256种颜色,可以转换成具有调色板的8位PNG格式。这将生成质量相等但占用更少内存的图像。因此,请注意此目录中放置的图像二进制文件可能会在编译时发生变化。如果您计划按位流方式读取图像以将其转换为位图,请将图像放入 res/raw/ 文件夹中,这样它们就不会被优化。

话虽如此,你还有一些可尝试的选项。Google I/O 2016 有一个关于此主题的好演讲,名为 "Image Compression for Android Developers",其中概述了可能性,解释了它们的优劣,并提供了一些通用最佳实践。


如果您的应用程序的大小过大而无法发布到市场,您可以选择:

  • 从应用程序中删除图像,并在首次启动应用程序时从互联网上加载到手机SD卡中。
  • 使用Android自带的APK扩展文件,基本上是相同的,但您不必自己做所有工作。

5
使用pngquantposterizer来减小PNG图像的大小(这些工具是有损的,但能显著地节省空间)。
你还可以使用PNGOUT进行优化,它是最好的无损优化器之一。
我已经为这些工具编写了Mac GUI

@Kornel,pngquant还能用吗?我刚试了一下Pngyu GUI,但图片在我的手机上无法显示,只能在模拟器中显示。 - Green_qaue
@MrCharli3 是的。对于 Android 支持(保留自定义块),请确保您已经编译了带有 libpng 1.6 或更新版本的 pngquant(pngquant -h)。我不维护 pngyu。官方的 OS X 构建肯定没问题。 - Kornel

3

请始终使用PNG(.png)图像。

并通过将您的图像上传到https://tinypng.com/在线压缩它。

简单而朴素,总是有效的。欢迎您的使用。 :)

还有一种更好的使用AndEngine的方法,它可以为您节省为每个手机制作布局的时间,并且无需为不同dpi的手机使用不同的图像。


2

你是否使用9-patches作为背景?此外,你可以使用imagemagick或类似的工具来压缩一批图像。


我在项目中使用.png格式的图片。我在网上看到了ImageMagick,但无法找到缩小图像内存大小的命令。你能帮我找到吗? - Khawar Raza
你需要使用较低的质量重新压缩图像。 - njzk2

2
  1. 尽量使用“.png”格式。
  2. 使用9-patch图像作为背景。
  3. 如果您有标题栏、带有垂直渐变的头部,请始终使用1像素宽的渐变图像。这是一个超级省钱的方法。
  4. 如果您成功获取Photoshop,他们有为Web/移动设备保存图像的选项。可以帮助制作具有良好质量的小尺寸图像。
  5. 如果您支持多个设备,请仅为那些真正必要的图像维护不同版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接