我想在Android应用程序中使用Adobe Illustrator中的图形(比如猫)。我希望用户能够使用颜色选择器更改毛发的颜色。我可以将图形保存为(SVG?)以允许我以编程方式控制Android应用程序的颜色?我是否必须为猫的每种颜色设置单独的图像?
答案 0 :(得分:5)
您不需要多个图像 - 您可以使用单个图像执行此操作 - 使用目标平台支持的任何格式。 Android支持PNG,GIF和JPG - 我会选择PNG或JPG,并选择JPG,因为这可能是一张照片。
假设现有图像有颜色(即不是黑色或白色毛发),您可以通过
更改毛发的颜色实现这一点。您可以使用jjil - Jon's imaging library - 针对具有Android特定支持的移动设备。
要实现上述两种转换,请按以下步骤操作:
如果图像中还有其他颜色很重要,则可以保留这些颜色不受影响,仅将变换应用于图像中的特定颜色。您检查当前的HSV值,如果色调,S或V值超出您不想修改的值,那么您只是不更改这些值。例如,如果猫有绿眼睛和棕色皮毛,你跳过HSV值,其中H表示它是绿色 - 留下那种颜色,眼睛不变。
答案 1 :(得分:5)
还有一个简单的混色技巧,无需触摸像素数据。只需保存具有偏移颜色的图像的多个版本,将它们读入应用程序,覆盖它们并使用alpha混合在它们之间进行混合。通过这种方式,您可以在不需要太多工作的情(我已经完成了,而不是在Android上。)
回复评论,以便我有更多空间:是的,三张R / G / B图像可以使用。如果您想要更多颜色选项,可以准备六张图像,色调相互旋转60度(60/120/180/240/300/360)。这可以在您选择的位图编辑器中轻松完成,这就是Hue / Saturation对话框在Pixelmator中的样子:
Hue shift http://zoul.fleuron.cz/tmp/hue.jpg
然后你只需要一次显示其中两个,将下面的alpha保持为1并将上面的alpha从0更改为1.当你达到1时,你隐藏下面的图像并在前景中显示下一个α。重复自由采访。这将为您提供充足的色调,混合均匀,工作量小。
答案 2 :(得分:0)
您可以使用具有索引颜色调色板的任何图像格式。 GIF是一个很好的例子,JPEG不是。
然后只需修改文件内图像调色板字节,就可以更改毛发颜色。
Wikipedia GIF图像格式文章介绍了文件调色板数据的位置和格式。
答案 3 :(得分:0)
如果您正在谈论线条艺术,那么SVG是一个不错的选择,因为嵌入在XHTML中,它的属性可以通过Javascript在Gecko或Webkit中编写脚本。然后,您可以仅定位头发节点并实时设置颜色属性。
SVG还支持引用和克隆,因此您可能只需要在一个地方更改颜色并设置所有头发节点以继承它。
答案 4 :(得分:0)
只需要一个覆盖在用户控制的纯色层上的alpha图像。