Каков наилучший способ нанесения цветового фильтра на прическу с помощью определенного шаблона изображения в стиле волос?

Я разрабатываю приложение для 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 из градиентного изображения.

Подобно:

Волосы

Цветовая палитра HairStyle

Я хочу применить вышеуказанный рисунок к изображению волос. Если у кого-нибудь есть идея, ответьте.

Просто для удовольствия и любопытства я попытался реализовать свою собственную идею.
После подготовки двух следующих изображений xxhdpi (480 dpi, чтобы они хорошо масштабировались), я поместил их в папку /res/drawable-xxhdpi )

Разумеется, мне пришлось аккуратно разделить изображения, чтобы они идеально соответствовали друг другу и накладывались друг на друга.

Введите описание изображения здесь И белые волосы (ваша копия сделана «беловатой» – обесцветить + играть с яркостью / контрастностью) Введите описание изображения здесь

Я сделал этот макет, в котором изображение волос накладывается на голову:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f000" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/head_xxh" /> <ImageView android:id="@+id/imgHair" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/hair_wht_xxh" /> <Button android:id="@+id/btnColor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Random hair color" android:onClick="clickHandler" /> </RelativeLayout> 

Вот код, который я использовал:

 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.parseColor("#ff888800"); break; } } img.setColorFilter(clr, PorterDuff.Mode.MULTIPLY); } } 

И некоторые из результатов, которые я получил:

Введите описание изображения здесьВведите описание изображения здесьВведите описание изображения здесьВведите описание изображения здесь

Даже если этот состав кажется картиной Энди Уарола, это не так. Это мое. 🙂
Это похоже на результат, который вы ищете.

[РЕДАКТИРОВАТЬ]

Я не пробовал эту новую идею, но (с некоторой дополнительной работой) вы можете даже изменить другие цвета:

  • Глаза
  • кожа
  • губная помада
  • Макияж глаз (для этого потребуется некоторое терпение)
Intereting Posts
Определить и связать событие click или touch Разработка приложения похожа на «Google сейчас» – возможно ли использовать распознавание голоса без ввода ключа? Android NDK – пишите только на C / C ++ Программно фиксировать в портретном режиме для определенных операций Андроидная активность открытого диалога, не открывая основной активности за ней Переход интерфейса к фрагменту Android конвертирует строку в строку массива Поддержка многоадресной рассылки на Android в режиме «Точка доступа» / «Модем» Как сохранить данные из json в sqlite в android Android конвертирует ImageReader Image в массив байтов YCbCr_420_SP (NV21), используя сценарий рендеринга? Как изменить шрифт ящика для навигации? Почему метод onPause вызывается сразу после onCreate Размер текста в дизайне Android TabLayout PhoneGap android: поле ввода перекрытий клавиатуры Webview – лучший способ загрузки изображений с устройства