android - saber - simulador de color de cabello online gratis
¿Cuál es la mejor manera de aplicar un filtro de color en el estilo de cabello con un patrón de imagen de estilo de pelo específico? (1)
Estoy desarrollando una aplicación para Android para el salón de peluquería. Tengo dos imágenes. Uno es peinado (pelo) y otro es patrón de color de pelo. Puedo cambiar el color del estilo de cabello en función del valor específico de rgb.
Mi código es el siguiente:
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);
Pero cuál es la solución que estoy buscando que suponga que tengo una imagen de patrón de color, entonces no es posible obtener el valor de rgb de la imagen de degradado.
Me gusta:
Quiero aplicar el patrón anterior en la imagen del cabello. Si alguien tiene una idea, por favor responda.
Solo por diversión y curiosidad, traté de hacer mi propia implementación de tu idea.
Después de preparar las dos siguientes imágenes xxhdpi (480 ppp, así que para que se escalen bien, las pongo en la carpeta /res/drawable-xxhdpi
)
Por supuesto, tuve que dimensionar cuidadosamente las imágenes para ajustarlas y superponerlas perfectamente.
y un cabello blanco (una copia del suyo, hecho "blanquecino" - desaturar + jugar con brillo / contraste)
Hice este diseño, en el que la imagen del cabello se superpone a la cabeza:
<?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>
Aquí está el código que utilicé:
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);
}
}
Y algunos de los resultados que obtuve:
Incluso si esta composición parece una imagen de Andy Wharol, no lo es. Es mio. :)
Parece que el resultado que estás buscando.
[EDITAR]
No probé esta nueva idea, pero (con un poco de trabajo adicional) puedes incluso cambiar otros colores:
- Ojos
- Piel
- Lápiz labial
- Maquillaje de ojos (esto requeriría algo de paciencia)