Jus*_*tin 100
我知道这个问题刚才问过,但是我遇到了一个更简单的解决方案,如果你有一个Drawable,你只想在灰度级中显示相同的drawable.不需要画布或画家......
protected Drawable convertToGrayscale(Drawable drawable)
{
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(filter);
return drawable;
}
Run Code Online (Sandbox Code Playgroud)
希望这也有帮助!
int*_*tgr 16
显然,您可以使用ColorMatrix该类进行任何类型的颜色空间转换.它有一种setSaturation()方法可以轻松地为您创建颜色到灰度的变换(零饱和度).
因此,您可以使用该过滤器绘制图像的新副本.我没有试过这个,但它应该工作:
Bitmap grayscaleBitmap = Bitmap.createBitmap(
colorBitmap.getWidth(), colorBitmap.getHeight(),
Bitmap.Config.RGB_565);
Canvas c = new Canvas(grayscaleBitmap);
Paint p = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(cm);
p.setColorFilter(filter);
c.drawBitmap(colorBitmap, 0, 0, p);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19319 次 |
| 最近记录: |