我想一个补充ColorFilter到ImageView.
目前我正在使用:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)
我检查了多种模式PotterDuff,如SRC_IN,SRC等,但我没有得到任何的模式有什么区别...所有模式将整个ImageView完美的红色.
我需要在现有图像中混合使用RED颜色,这样图像看起来就会带有REDDISH色调....
我正在尝试创建一个获取位图和命运颜色的函数并返回彩色位图(不使用绘图).我找到了几种方法,但没有任何方法可以像我想要的那样.
我能找到的最接近的解决方案是:
public static Bitmap changeImageColor(Bitmap srcBmp, int dstColor) {
int width = srcBmp.getWidth();
int height = srcBmp.getHeight();
float srcHSV[] = new float[3];
float dstHSV[] = new float[3];
Bitmap dstBitmap = Bitmap.createBitmap(width, height, Config.RGB_565);
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
Color.colorToHSV(srcBmp.getPixel(col, row), srcHSV);
Color.colorToHSV(dstColor, dstHSV);
// If it area to be painted set only value of original image
dstHSV[2] = srcHSV[2]; // value
int color2=Color.HSVToColor(dstHSV);;
dstBitmap.setPixel(col, …Run Code Online (Sandbox Code Playgroud) 令人困惑的是,“背景”也经常被用来简单地表示“用于 Android 的照片的‘背景颜色’:src”。
说我有。
<ImageView
android:src="@drawable/white_foreground_thing"
android:background="@drawable/some_bg_thing"
/>
Run Code Online (Sandbox Code Playgroud)
我要更改setColorFilter。
事实上,这是否仅影响“src” - 即前景。
或者它也会影响背景。?
android:background="@drawable/some_bg_thing"
Run Code Online (Sandbox Code Playgroud)
在我的示例中,前景(即 src)是一个 40 像素的白点(因此,我将制作“不同颜色的点”)。
但是背景只是一个普通的按钮背景,实际上还带有一些透明度等等。
所以我不想影响背景;我将只更改不同按钮的“大点的颜色”。
请注意,(a) 从测试中很难确定,setColorFilter 的微妙之处和 (b) 我真的在 doco 中找不到它(对你来说,Android 伙计们可能很明显!)
进一步 - PosterDuff.Mode 在这里相关吗?或者这完全无关紧要?
顺便说一下,在许多情况下,这里是一个很棒的解决方案。/sf/answers/1242964411/
(注意底部的彩色圆点)
但在这里,我只想找出地狱 setColorFilter 影响 .background 还是只影响 .src