首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓中将位图转换为GrayScale

在安卓中将位图转换为GrayScale
EN

Stack Overflow用户
提问于 2010-07-31 01:17:16
回答 5查看 80.5K关注 0票数 62

我是新来这个网站的,我有一个关于Android的问题。

有没有办法将位图转换为灰度?我知道如何绘制灰度位图(使用画布操作:http://www.mail-archive.com/android-developers@googlegroups.com/msg38890.html),但我真的需要灰色位图(或者至少是可以稍后转换为位图的位图)。我必须手动实现它(逐个像素操作)吗?

我找了很多,还是找不到。有谁知道一种简单有效的方法吗?

非常感谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-31 03:22:13

这不正是您要链接的代码要做的吗?它获取一个彩色位图("bmp"),创建一个复制位图( "bm“),然后使用滤镜将彩色位图绘制为”bm“,将其转换为灰度。从那时起,您可以使用"bm“作为实际的灰度位图,并对它做任何您想做的事情。

您需要稍微调整一下示例(它使用的是硬编码大小,您可能只想克隆原始位图的大小),但除此之外,根据您的需要,这似乎是随时可用的。

票数 16
EN

Stack Overflow用户

发布于 2010-08-03 03:24:06

哦,是的,确实如此。我用错了,谢谢你指给我看。(对于这个无用的问题,很抱歉)这里是结束代码(主要基于链接的代码),因为它可能会对某人有所帮助:

代码语言:javascript
复制
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;
}

任何评论或评论都是非常欢迎的。

谢谢

票数 162
EN

Stack Overflow用户

发布于 2015-04-19 02:04:12

如果您要在ImageView上显示该位图。然后,您可以尝试以下代码,而不是将位图转换为灰度:

代码语言:javascript
复制
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);

ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
imageview.setColorFilter(filter);

For reference

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3373860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档