有没有办法从大型图像创建xxhdpi,xhdpi,hdpi,mdpi和ldpi可绘制对象?


271

有没有一种方法可以自动从大型图像创建xxhdpi,xhdpi,hdpi,mdpi和ldpi可绘制对象?例如,假设我有一个512x512的图片,并且想要在适当的文件夹中针对Android支持的不同屏幕分辨率使用该图片的不同版本。


3
如果您使用的是Windows:github.com/delight-im/AndroidDrawableResizer
CAW

我在Android上使用了此工具,将图片放在手机的下载文件夹中,然后选择参考尺寸和dpi,然后它将转换为所有密度并创建适当的文件夹: play.google.com/store/apps/details ?id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun

检查此答案以获取快速简便的方法-stackoverflow.com/a/40830399/4015856
Asim KT 2016年

4
在Android Studio中,右键单击res -> New -> Image Asset,选择Launcher Icons (legacy)
onmyway133 '18

Answers:


191

选项#1:只需-xxhdpi交付可绘制对象,然后让Android在运行时为您对其进行下采样(缺点:仅适用于-xxhdpi已知的较新设备)。

选项2:使用Android Asset Studio为您降低采样率。

选项3:根据ssantos的回答,在图形编辑器中自动执行该过程。

选项4:使用ImageMagick之类的脚本编写自己的解决方案。

选项5:使用图像烘焙师


仅运送xxhdpi和xhdpi可以替代吗?我假设不了解xxhdpi的设备将从xhdpi降级
Juan Campa

@Juan:“是否仅提供xxhdpi和xhdpi替代?” -仅当您minSdkVersion8岁或更高时。如果您要支持的设备比以前更旧,则还需要hdpi一个设备,因为API Level 7及以下版本xhdpi都不xxhdpi存在。现在,您是否喜欢降低采样后的可绘制对象的外观完全是另一回事……
CommonsWare,2014年

关于选项1和您对xxhdpi不存在的评论,我认为这是不正确的。在内部,Android使用DPI数字(160、320、480等)而不是字符串作为资源限定符。如果系统DPI为160,并且找到640图像,则它将对4进行下采样,而无需“知道”其文本限定符。我们已经将仅存在于xxxhdpi(Android 4.3)文件夹中的资源发送到Android 2.3设备。
马特·奎格利

选项2不支持xxxhdpi
显示名称

2
选项4:此处
rdromao 2015年

158

更新资料

前面提到的插件已经被废弃了,但它显然有一个上最新叉这里

旧答案

我使用名为的Android Studio插件Android Drawable Importer

在此处输入图片说明

要在安装后使用它,请右键单击您的res / drawable文件夹,然后选择 New > Batch Drawable Import

然后通过+按钮选择图像并将“分辨率”设置为xxhdpi(或源图像的任何分辨率)。


13
谢谢,但是我已经使用了“批绘制可导入”,而不是“缩放可绘制”。
Malder

正如@ user123456所说的,我不得不使用Batch Drawable,因为没有出现Scaled Drawable
lujop

1
该插件似乎已不再维护-上一次提交是在2016年(github.com/winterDroid/…),崩溃报告没有任何响应...
减少了活动

3
我设法在AS 3.6下复活了这个可爱的插件,甚至在未经测试的AS 3.5下也复活了
Bad Loser

2
@PrajwalW,更新了答案以提及最新的fork。
亚当·约翰斯

97

更新:

旧的安装插件的方式不再有效,但是原始插件的分支在这里仍然起作用。手动安装插件后,您仍然可以按照此答案进行操作。

如果您想要快速简便的方法,请访问https://www.img-bak.in/https://appicon.co/,它们也可与iOS一起使用。

我将尝试逐步解释该过程,以便任何人都可以轻松理解。

1.按照自述文件中的说明手动安装插件

2.重新启动android studio

3.如以下屏幕截图所示,此处只有一个可绘制对象

在此处输入图片说明

4.现在,右键单击drawable文件夹,然后导航到New> Batch Drawable Import。

在此处输入图片说明

8.现在单击添加图标

5.现在,选择“单一”图像,以获取不同的可绘制图形。

在此处输入图片说明

6.现在选择原始图像是哪个尺寸。如果原始图像是xxhdpi(在我的情况下),请选择“ xxhdpi”作为“ Source Resoultion”。

7.现在按ok,然后再次按ok,然后将花费几秒钟,然后您将神奇地获得drawable的所有变量。在此处输入图片说明

在此处输入图片说明


3
这个插件很好,但是原始大小必须具有足够的分辨率,以保持资产的良好质量。我想最好先问一下设计师xxxhdpi资产,然后按比例缩小。
纳尔科2016年

@LaxmanBhattarai,我想仅在平板电脑的横向屏幕上支持我的应用程序。因此,根据您的回答,我应该为图像提供哪个drawable文件夹以支持所有平板电脑设备?你能告诉我吗?
希伦·帕特尔

developer.android.com/training/basics/supporting-devices/… 请参阅此文档,我认为在任何文件夹的末尾附加-land可能会导致横向布局
erluxman

选项“ Icon Pack Drawable Importer”利用Material / Android图标解决了。感谢提示@LaxmanBhattarai
Francis Rodrigues

1
该插件似乎已不再维护-上一次提交是在2016年(github.com/winterDroid/…),崩溃报告没有任何响应...
减少了活动

67

使用Image Baker等在线服务。

图像贝克

这很简单。上载图像并下载适用于Android和iOS的已处理资产。

下载的图像

注意:Image Baker是由我的朋友和我自己创建的免费服务。


1
它为我工作。我认为有一个反馈小部件,您可以将所面临的问题告诉开发人员。
Asim KT

5
是的,它不起作用。它仍然是“上传图像”
batmaci

1
工作正常 由于它是免费服务服务器,因此速度可能很慢。(24小时后清理清理错误的工作)一天后重试或让开发人员知道。
Asim KT

为什么cron作业每24小时运行一次,而不是更频繁地运行以防止其卡住?它是免费服务的限制吗?另外,如果它在免费服务器上运行,为什么会有“我们每年需要约100美元来运行该服务”(开发成本?)。
减少活动

1.这是免费服务的局限性2.如果免费,则无需花钱。(仅域名费用)
Asim KT

40

根据CommonsWare的回答,使用ImageMagick(转换)的bash脚本:

感谢Kishan Vaghela,添加了文件夹创建和参数检查

#!/bin/sh
#---------------------------------------------------------------
# Given an xxhdpi image or an App Icon (launcher), this script
# creates different dpis resources and the necessary folders
# if they don't exist
#
# Place this script, as well as the source image, inside res
# folder and execute it passing the image filename as argument
#
# Example:
# ./drawables_dpis_creation.sh ic_launcher.png
# OR
# ./drawables_dpis_creation.sh my_cool_xxhdpi_image.png
#
# Copyright (c) 2016 Ricardo Romao.
# This free software comes with ABSOLUTELY NO WARRANTY and
# is distributed under GNU GPL v3 license. 
#---------------------------------------------------------------

if [ $# -eq 0 ]; then
    echo "No arguments supplied"
else if [ -f "$1" ]; then
    echo " Creating different dimensions (dips) of "$1" ..."
    mkdir -p drawable-xxxhdpi
    mkdir -p drawable-xxhdpi
    mkdir -p drawable-xhdpi
    mkdir -p drawable-hdpi
    mkdir -p drawable-mdpi

    if [ $1 = "ic_launcher.png" ]; then
        echo "  App icon detected"
        convert ic_launcher.png -resize 144x144 drawable-xxhdpi/ic_launcher.png
        convert ic_launcher.png -resize 96x96 drawable-xhdpi/ic_launcher.png
        convert ic_launcher.png -resize 72x72 drawable-hdpi/ic_launcher.png
        convert ic_launcher.png -resize 48x48 drawable-mdpi/ic_launcher.png
        rm -i ic_launcher.png
    else
        convert $1 -resize 75% drawable-xxhdpi/$1
        convert $1 -resize 50% drawable-xhdpi/$1
        convert $1 -resize 38% drawable-hdpi/$1
        convert $1 -resize 25% drawable-mdpi/$1
        mv $1 drawable-xxxhdpi/$1
    fi
echo " Done"
else
    echo "$1 not found."
fi
fi

2
非常有用的脚本!无论如何,我会使用xhdpi的67%(而不是66%)。这是因为xhdpi与xxhdpi之比为2/3,按百分比四舍五入后得出67。否则,如果使用66并说输入的分辨率为xxhdpi = 96 * 96,则xhdpi = 63 * 63而不是64 * 64。
HaimS,2015年

如果找不到,我们应该创建目录
Kishan Vaghela


非常有用,并且效果很好。我想您最后缺少一个Fi。在bash 4.3.11上给出错误
-Mijo

您说得对@ Mijo,Kishan实际上在他的主意中拥有最后一个Fi,我把它删除了,愚蠢的我
rdromao

23

编辑:

该网站现在称为appicon.co


我通常使用assets.codly.io
它在您的浏览器中本地生成资产,没有上传,也没有下载。

在此处输入图片说明


它仅接受“的应用程序的图标图像(1024×1024”作为输入。
还原活性

2
@MateuszKonieczny网站已更新,其余图像还有一个图像标签,称为“图像集”。
A.Zidan '18

对于Android,它仅生成应用程序图标,即manip它也生成可绘制的图标
Nivrutti Pawar,

在该网站上选择您的设计基准尺寸是什么?我们应该选择3倍还是4倍??
K Pradeep Kumar Reddy

13

刚刚在新的Android Studio中找到了一种简单的方法:

在此处输入图片说明

在此处输入图片说明


KinhKohn,还有什么呢?我们可以选择其他资源吗?
CoolMind

如果要上传任何图像,则只需使用浏览选项即可。
Kohn1001 '16

是的,它有效。但是似乎仅在资产类型“ Launcher icons”中才需要颜色图标。因此,它也替换了启动器图标。并将图像放入mipmap文件夹。
CoolMind'3

1
请注意,仅当您要添加图标时才适用。
减少活动

8

我在Eclipse中使用了一个名为Android Icon Set的工具来处理标准图标,例如Launcher,ActionBar,Tab图标和通知图标。您可以从File-> New-> Other ..-> Android-> Android Icon Set启动它。最好的部分是您可以从计算机中选择任何文件,它将自动将所有标准尺寸的图像放入您的项目目录中。

在此处输入图片说明


...您还可以使用与该工具等效的网站:android-ui-utils.googlecode.com/hg/asset-studio/dist/… (此答案中描述的工具更好,因为它直接集成到Eclipse中,并会自动将图标放置在正确的文件夹中)。
Booger 2013年

它支持“通用图标”吗?
2013年

网络工具似乎支持它。我也没有使用过网络。您可以查看以下链接:android-ui-utils.googlecode.com/hg/asset-studio/dist/…–
Nitin Sethi

7
  1. 只需使用https://romannurik.github.io/AndroidAssetStudio/index.html即可。它可以根据图像制作一组图标,稍后您可以下载一个zip文件。
  2. 或从https://github.com/redwarp/9-Patch-Resizer/releases下载Windows应用程序(无需安装)并打开图标。
  3. 您也可以使用插件Android Drawable Importer,请参见上面的答案。由于已废弃,因此请安装货叉。请参阅Android Drawable Importer为什么会在AS 3.5及更高版本中忽略选择,或参见https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin
  4. https://appicon.co/#image-sets

2
Android Drawable Importer的作者不再是AWOL之前,我已经为以后的Android Studio版本提供了一个临时安装zip
Bad Loser

@BadLoser,我看到了您的主题,谢谢!我很少使用此插件,它包含一些错误,因此,如果它们再次发生,将尝试您的解决方案。
CoolMind

是的-绝对是这件老事的写作-但要等到AS Resource Manager彻底清理后,再行了!
Bad Loser

4

使用Android Studio图片资产

去:

 Project>res --> right click

 new> image asset

然后设置:

-Icon type: Launcher Icons
-Asset type: Image
-Path: the/path/to/your/image
-Trim: No
-Padding: 0%
-Shape: None
-Effect: None

选择:下一步>完成。

Now you will have your icon in the correct resolutions.

可视示例:

编辑:我建议使用SVG图像创建Vector Drawable,然后在画布中使用它们将它们调整为正确的大小或简单地更改DP。

您可以从Google获取默认图标,也可以只创建自己的图标

 Project>res --> right click
 new> vector asset

然后设置:

-Asset type: Local file (SVG, PSD)
-Path: the/path/to/your/image
-Size: check Override to keep your aspect ratio.
-Chek enable auto mirroring for RTL Layout.

选择:下一步>完成。

现在,您将拥有自己的图标,并且可以更改大小,颜色等。 在此处输入图片说明


2

也可以将Vector Asset Studio与可伸缩矢量图形(SVG)结合使用。Android Studio将为您处理其余的工作。如官方文档所述

Vector Asset Studio可帮助您添加材质图标并将可伸缩矢量图形(SVG)文件作为可绘制资源导入到您的应用程序项目中。与光栅图像相比,矢量绘制对象可以减小应用程序的大小,并可以调整其大小而不会降低图像质量。它们可以帮助您更轻松地支持具有不同屏幕尺寸和分辨率的不同Android设备,因为您可以在所有设备上显示一个可绘制的矢量。

我认为这是未来的方法。

Vector Asset Studio的菜单项

Vector Asset Studio的屏幕截图


2

我写了一个Photoshop脚本从PSD文件创建ic_launcher png文件。只需检查ic_launcher_exporter即可

要使用它,只需下载它并使用photoshop中的脚本即可。

在此处输入图片说明

并配置要在何处生成输出文件。

在此处输入图片说明


1

并非100%自动执行,但我使用Photoshop Actions节省了大量时间

例如,给定xhdpi资产,然后我为hdpi和创建一个任务mdpi,分别缩放到66.66%和44.44%。然后我对文件夹中的所有图像运行操作xhdpi

对于512x512的图像,您要做的就是计算缩放图像以达到xxhpi,xhdpi,hdpi和mdpi的百分比。


0

我在此线程中一直使用解决方案,并且使用Android Drawable Importer插件很容易

如果您在MacOS上使用Android Studio,只需尝试以下步骤即可:

  • 点击栏菜单Android Studio,然后选择首选项或点击按钮Command +,
  • 然后选择插件
  • 单击浏览存储库
  • 在搜索栏中输入Android Drawable Importer
  • 点击安装按钮
  • 然后显示“重新启动”对话框,只需重新启动Android Studio

成功安装插件后,要运行此插件,只需单击创建新菜单,然后选择批量绘制可导入。然后单击加号按钮(也称为添加按钮),然后选择要绘制的文件。然后只需单击“确定”,然后“确定”可绘制对象就全部包含了。

如果您对我的话感到困惑,请参阅learningmechine的图像教程。


2
Android Drawable Importer市场上没有插件了。我尝试了Android Asset Importer but it crashes,当我尝试打开它(的Android 3.6.1工作室)。我最终使用了appicon.co
漏洞

-1

Android中的一个简单插件将为您提供帮助。步骤1.转到设置步骤2.单击插件步骤3.搜索Android Drawable Importer步骤4.安装插件并重新启动

如何使用?

转到文件>新建>批处理可绘制导入

请享用


Android Drawable ImporterAndroid Studio市场中不再有插件。
Micer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.