代码之家  ›  专栏  ›  技术社区  ›  Jason Christa

如何更改复杂图形的颜色?

  •  4
  • Jason Christa  · 技术社区  · 16 年前

    我有一个在adobeillustrator的图形(比方说猫),我想在Android应用程序中使用。我想让用户能够改变使用颜色选择器毛发的颜色。我可以将图形另存为什么(SVG?),以便通过android应用程序编程控制颜色?我必须有一个单独的图像为每种颜色的猫?

    5 回复  |  直到 16 年前
        1
  •  5
  •   zoul    16 年前

    也有一个简单的技巧,不必接触像素数据的颜色混合。只需保存几个版本的图像与转移的颜色,读入应用程序,覆盖他们,并使用阿尔法混合他们之间。这样你可以得到平滑的颜色变化没有太多的工作(我做到了,只是在安卓上没有。)

    回复评论,以便我有更多的空间:是的,三个R/G/B图像将工作。如果你想有更多的颜色选项,你可以准备六个色调彼此旋转60度(60/120/180/240/300/360)的图像。这可以在您选择的位图编辑器中轻松完成,这就是“色调/饱和度”对话框在中的样子 Pixelmator

    Hue shift http://zoul.fleuron.cz/tmp/hue.jpg

        2
  •  5
  •   mdma    16 年前

    你不需要几个图像-你可以用一个图像-使用目标平台上支持的任何格式。Android支持PNG、GIF和JPG,我会选择PNG或JPG,因为这可能是一张照片。

    假设现有图像具有颜色(即不是黑色或白色毛发),则可以通过以下方式更改毛发的颜色:

    为了实现这一点。你可以用 jjil - Jon's imaging library

    1. HSV ,使用 RgbHsv 管道阶段
    2. 将所需的毛发颜色RGB转换为HSV(例如,如果需要红色毛发,请将RGB(红色)转换为HSV(红色))( Example code .)
    3. 然后将图像的HSV值转换回rgb。jjil库中似乎没有HsvRgb过滤器,但这可以实现为RgbHsv的逆。这里有一个 HSV2RGB 功能。

        3
  •  0
  •   zed_0xff    16 年前

    可以使用任何具有索引调色板的图像格式。 GIF

    然后只需在文件中修改图像调色板字节,就可以更改毛发颜色。

        4
  •  0
  •   SpliFF    16 年前

    如果你说的是线条艺术,那么SVG是一个不错的选择,因为它嵌入到XHTML中,其属性可以通过Javascript在Gecko或Webkit中编写脚本。然后可以仅针对头发节点并实时设置“颜色”属性。

    SVG还支持引用和克隆,因此您可能只需要在一个地方更改颜色,然后设置所有头发节点来继承它。

    添加的链接: https://launchpad.net/libsvg-android

        5
  •  0
  •   thomasfedb    16 年前

    只要有一个阿尔法图像,是一个纯色层,由用户控制覆盖。