Я хочу добавить цветной фильтр в изображение
Я хотел бы добавить ColorFilter
в ImageView
.
В настоящее время я использую:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
Я проверил несколько режимов в PotterDuff
, таких как SRC_IN
, SRC
и т.д., но я не получаю никакой разницы ни в одном из режимов... Весь режим превращает весь ImageView
в идеальный красный цвет.
Мне нужно смешать RED-цвет в существующем изображении, чтобы изображение выглядело с оттенком REDDISH....
Ответы
Ответ 1
Правильный способ сделать это - использовать PorterDuff.Mode.LIGHTEN
.
Итак, обновленный код будет выглядеть следующим образом:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN);
Ответ 2
Это сработало для меня:
в res/colors.xml:
<color name="highlight_color_filter">#A5FF0000</color>
в вашей деятельности инициализируйте фильтр и выделите краску:
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);
затем примените фильтр к ImageView:
ImageView iv=(ImageView)findViewById(ResIdOfImageToFilter);
iv.setColorFilter(redHighLight);
Если это не работает, попробуйте применить к ImageView drawable:
iv.getDrawable().setColorFilter(redHighLight);
надеюсь, что это поможет.
Ответ 3
Вы можете использовать android: tint (ссылка) в вашем XML файле. Пример:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/your_drawable"
android:tint="@color/your_color" />
Ответ 4
Другое решение, вы могли бы сохранить режим PorterDuff.Mode.SRC_ATOP
и использовать другую альфу, чтобы иметь прозрачный цвет.
Я использую значение 155 в качестве значения Alpha:
final int semiTransparentGrey = Color.argb(155, 185, 185, 185);
drawable.setColorFilter(semiTransparentGrey, PorterDuff.Mode.SRC_ATOP);
Ответ 5
В вашем XML файле вы можете указать оттенок. Например
<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" />
Если вы хотите программно добавить цветной фильтр, используйте
scratchImage_2.setColorFilter(Color.BLACK);
Вы также можете удалить этот цветной фильтр, используя этот код:
scratchImage_2.setColorFilter(null);