C罗泡面发型:用指定的发型图像图案在发型上应用滤色器的最佳方法是什么

我正在为发型沙龙开发一个 android 应用程序。我有两个图像。一个是发型 (头发),另一个是头发颜色模式。我能够根据特定的 rgb 值更改发型的颜色。

我的代码如下:

int color = Color.rgb(182,132, 84); // getting rgb value 
Paint paint = new Paint();
paint.setColorFilter(new LightingColorFilter(color, 1));
transform.reset();
transform.postTranslate(-width / 2.0f, -height / 2.0f);
transform.postRotate(getDegreesFromRadians(angle));
transform.postScale(scale, scale);
transform.postTranslate(position.getX(), position.getY());
canvas.drawBitmap(bitmap, transform, paint); 

但是我正在搜索的解决方案是什么,假设我有彩案图像,那么它不可能从梯度图像中获得 rgb 值。

喜欢:

我想在头发图像上应用上述图案。如果有人有想法,请回复。

只是为了好玩和好奇,我试图让我自己实现你的想法。
在准备好下面的两个 xxhdpi 图像(480 dpi,所以让他们规模好-然后我把它们放在/res/drawable-xxhdpi文件夹)

当然,我必须仔细调整图像的大小,使其完全适合并重叠。

and a white hair (a copy of yours, made "whitish" - desaturate + play with brightness/contrast)

我做了这个布局,其中头发图像与头部重叠:



    
    
    

这是我使用的代码:

package com.dergolem.abc_2;
import java.util.Random;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
public class Generic
extends Activity
{
    Random rnd = new Random();
    Button btn = null;
    ImageView img = null;
    @Override
    public void onCreate(final Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.hair);
        img = (ImageView) findViewById(R.id.imgHair);
        btn = (Button) findViewById(R.id.btnColor);
    }
    public void clickHandler(final View v)
    {
        colorize(rnd.nextInt(7));
    }
    private void colorize(final int num)
    {
        int clr = Color.WHITE;
        switch (num)
        {
            case 0:
            {
                clr = Color.RED;
                break;
            }
            case 1:
            {
                clr = Color.GREEN;
                break;
            }
            case 2:
            {
                clr = Color.BLUE;
                break;
            }
            case 3:
            {
                clr = Color.BLACK;
                break;
            }
            case 4:
            {
                clr = Color.CYAN;
                break;
            }
            case 5:
            {
                clr = Color.YELLOW;
                break;
            }
            case 6:
            {
                clr = Color.pColor("#ff888800");
                break;
            }
        }
        img.setColorFilter(clr, PorterDuff.Mode.MULTIPLY);
    }
}

和一些我得到的结果:

即使这个构图看起来像 Andy Wharol 的照片,它也不是。它是我的。:)
它似乎是您要寻找的结果。

[EDIT]

我没有尝试这个新想法,但是(通过一些额外的工作)您甚至可以更改其他颜色:

眼睛

皮肤

口红

眼部化妆(这需要一些耐心)

你可能感兴趣的:(c语言,开发语言)