如何将 Android XML Drawable 保存、导出或转换为 PNG 图像文件?
我有一个我非常喜欢的渐变,但我使用 XML 可绘制对象创建了它:
<gradient
android:startColor="#DD181C18"
android:endColor="#809C7D5A"
android:angle="90"/>
将其创建为 png 或类似内容的简单方法是什么?
我真正想要的是: 一个工具,可以使用该工具并使用 #aarrggbb
格式作为输入 alpha/颜色(90 度角,一般角度,将是一个优点)来制作渐变。
感谢您的任何帮助。
编辑:哦!我完全意识到 ImageMagick 应该能够做到这一点。我很快就会发布我的答案代码,除非有人想抢先一步并获得全部赏金!
I have a gradient I really like but I created it using XML drawable:
<gradient
android:startColor="#DD181C18"
android:endColor="#809C7D5A"
android:angle="90"/>
What would be an easy way to create this to a png or something similar?
What I'm really looking for is:
a tool that can and instructions using that tool to make gradients using an #aarrggbb
format as it's input alpha/color (90 degree angle, angles in general, would be a plus).
Thanks for any help.
EDIT: D'oh! I totally just realized ImageMagick should be able to do this. I will post the code that is my answer shortly, unless someone wants to beat me to it and receive the whole bounty!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
最后,这是一个使用 ImageMagick 的单行!
我不敢相信我之前没想过使用 ImageMagick,呃!!!
作为参考,我使用它来使用我的 Android XML 可绘制 ##AARRGGBB 值创建 .png 图像文件。 ImageMagick FTW!!!
感谢大家的意见。
In the end it was a one liner using ImageMagick!
I can't believe I didn't think to use ImageMagick before, Duh!!!
For reference, I used this to create a .png image file using my Android XML drawable ##AARRGGBB values. ImageMagick FTW!!!
Thanks for everyone's input.
使用像 Photoshop 或 Paint.Net 这样的程序 - 它们都有渐变工具,并且可以让您以与那里相同的格式设置颜色。
Use a program like photoshop or paint.Net - they both have gradient tools and should let you set the colours in the same format as you have there.
尝试一下:
这里的
item
是我想要渲染的视图/视图组。我实际上使用相同的片段(减去文件写入)进行一些屏幕渲染,并且它似乎保留了透明度。
关于颜色的注意事项:
在 android 中可以使用十六进制值指定颜色。模式
ARGB
中的每个颜色值都有一个字节(8 位)可用(总共 32 位)。A
代表Alpha
,R
代表Red
,G
代表绿色
和B
代表蓝色
。每个分量的值可以在 (0, 255) 之间。请注意:因此,如果您想要带有不透明“Alpha
(无透明度)的白色”,您可以使用
#FFFFFFFF。对于黑色
#FF000000。对于灰色
#FF808080。
80是十进制 128 的十六进制值,为您提供全强度白色的一半。所以
80`给你中值灰色。使用十六进制算术来获取十进制颜色的值。
AFAIK,径向渐变的角度应该没有任何区别。在 GIMP 中尝试所有这些或阅读 GIMP 教程。如果可以的话,最好还是使用 Photoshop(提供 90 天试用版)。
Give this a try:
Here
item
is the view/view group that I want to render.I actually use the same fragment (minus the file write) for some on screen rendering and it seems preserve transparency.
Note About Colors:
Colors can be specified in android using hexadecimal values. A byte (8 bits) are available for each color value in the pattern
ARGB
(total 32 bits).A
stands forAlpha
,R
stands forRed
,G
forGreen
andB
forBlue
. Each component can have values between (0, 255). Note that:So if you wanted a white color with opaque 'Alpha
(no transparency) you would use
#FFFFFFFF. For Black
#FF000000. For Grey
#FF808080.
80is hex value of decimal 128 and gives you half of full intensity white. so
80` gives you median Grey.Use Hexadecimal arithmetic to get values of your decimal colors.
AFAIK, Angle for a radial gradient should not make any difference. Try all of this in GIMP or read GIMP tutorials. Better still use Photoshop if you can (90 days Trial versions available).
您还可以创建一个仅将渐变作为背景的活动,屏幕上没有其他内容。
在模拟器或设备上运行应用程序,并使用 DDMS 进行屏幕捕获。然后,您将有一个渲染良好的 PNG 保存,并且您可以通过改变您正在使用的模拟器的屏幕尺寸来创建您想要的任何尺寸。
您的 XML 可能如下所示:
You could also create an activity with just the gradient as a background, and nothing else on the screen.
Run the app on an emulator or device, and use DDMS to take a screen capture. You will then have a nicely rendered PNG to save, and you can create whatever size you wish, by varying the screen size of the emulator you are using.
Your XML could look like this:
将矢量图像转换为 PNG 可以轻松地通过两个步骤完成:
将 Android Drawable 转换为 SVG
这些文件格式非常相似,您可以轻松地将矢量手动转换为 SVG(请参阅 这个答案),但也有一些网站可以为您执行此操作。
将 SVG 渲染为 PNG
有很多网站都可以做到这一点。快速搜索应该会产生大量结果。
Converting a vector image to a PNG can easily be done in two steps:
Converting an Android Drawable to an SVG
These file formats are so similar, you can easily convert your vector to an SVG by hand (see this answer), but there are also websites who can do this for you.
Render the SVG as a PNG
There are many websites who can do this. A quick search should yield plenty of results.