android - snapseed - Quiero añadir un filtro de color a la vista de imagen.
filtros para fotos (5)
En su archivo xml puede tintar usuario Por ejemplo
<ImageView
android:id="@+id/scrachImage_1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:tint="@color/colorAccent"
android:src="@drawable/eagle" />
Si desea agregar un filtro de color mediante programación, utilice
scratchImage_2.setColorFilter(Color.BLACK);
También puedes eliminar este filtro de color usando este código:
scratchImage_2.setColorFilter(null);
Me gustaría agregar un ColorFilter
a ImageView
.
Actualmente estoy usando:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
He comprobado los modos múltiples en PotterDuff
, como SRC_IN
, SRC
, etc., pero no SRC_IN
ninguna diferencia en ninguno de los modos ... Todos los modos convierten a todo el ImageView
en un color rojo perfecto.
Necesito mezclar el color ROJO en la imagen existente para que la imagen se vea con un matiz ROJO ...
Esto funcionó para mí:
en res / colors.xml:
<color name="highlight_color_filter">#A5FF0000</color>
en su actividad inicialice el filtro y resalte la pintura:
int highlightColor = context.getResources().getColor(R.color.highlight_color_filter);
PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(highlightColor, PorterDuff.Mode.SRC_ATOP);
Paint redHighLight = new Paint();
redHighLight.setColorFilter(targetHitFilter);
redHighLight.setAlpha(190);
Luego aplique el filtro al ImageView:
ImageView iv=(ImageView)findViewById(ResIdOfImageToFilter);
iv.setColorFilter(redHighLight);
Si eso no funciona, intente aplicar a ImageView drawable:
iv.getDrawable().setColorFilter(redHighLight);
Espero que ayude.
La forma correcta de hacerlo fue usando PorterDuff.Mode.LIGHTEN
.
Entonces el código actualizado será como:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN);
Otra solución, podría haber mantenido el modo PorterDuff.Mode.SRC_ATOP
y usar otro alfa para tener un color transparente.
Yo uso 155 como valor alfa:
final int semiTransparentGrey = Color.argb(155, 185, 185, 185);
drawable.setColorFilter(semiTransparentGrey, PorterDuff.Mode.SRC_ATOP);
Puedes usar android: tint ( link ) en tu archivo xml. Ejemplo:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/your_drawable"
android:tint="@color/your_color" />