我是新来这个网站的,我有一个关于Android的问题。
有没有办法将位图转换为灰度?我知道如何绘制灰度位图(使用画布操作:http://www.mail-archive.com/android-developers@googlegroups.com/msg38890.html),但我真的需要灰色位图(或者至少是可以稍后转换为位图的位图)。我必须手动实现它(逐个像素操作)吗?
我找了很多,还是找不到。有谁知道一种简单有效的方法吗?
非常感谢!
发布于 2010-07-31 03:22:13
这不正是您要链接的代码要做的吗?它获取一个彩色位图("bmp"),创建一个复制位图( "bm“),然后使用滤镜将彩色位图绘制为”bm“,将其转换为灰度。从那时起,您可以使用"bm“作为实际的灰度位图,并对它做任何您想做的事情。
您需要稍微调整一下示例(它使用的是硬编码大小,您可能只想克隆原始位图的大小),但除此之外,根据您的需要,这似乎是随时可用的。
发布于 2010-08-03 03:24:06
哦,是的,确实如此。我用错了,谢谢你指给我看。(对于这个无用的问题,很抱歉)这里是结束代码(主要基于链接的代码),因为它可能会对某人有所帮助:
public Bitmap toGrayscale(Bitmap bmpOriginal)
{
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}任何评论或评论都是非常欢迎的。
谢谢
发布于 2015-04-19 02:04:12
如果您要在ImageView上显示该位图。然后,您可以尝试以下代码,而不是将位图转换为灰度:
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
imageview.setColorFilter(filter);https://stackoverflow.com/questions/3373860
复制相似问题