gpt4 book ai didi

android - 替换位图中的颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:34 25 4
gpt4 key购买 nike

我有在我的应用程序中显示的图像。它们是从网上下载的。这些图像是近乎白色背景上的物体图片。我希望此背景为白色 (#FFFFFF)。我想,如果我查看像素 0,0(应该始终为灰白色),我可以获得颜色值并将图像中具有该值的每个像素替换为白色。

以前有人问过这个问题,答案似乎是这样的:

int intOldColor = bmpOldBitmap.getPixel(0,0);

Bitmap bmpNewBitmap = Bitmap.createBitmap(bmpOldBitmap.getWidth(), bmpOldBitmap.getHeight(), Bitmap.Config.RGB_565);
Canvas c = new Canvas(bmpNewBitmap);
Paint paint = new Paint();

ColorFilter filter = new LightingColorFilter(intOldColor, Color.WHITE);
paint.setColorFilter(filter);
c.drawBitmap(bmpOriginal, 0, 0, paint);

但是,这不起作用。

运行此代码后,整个 图像似乎就是我要删除的颜色。就像现在整个图像都是 1 种纯色。

我也希望不必遍历整个图像中的每个像素。

有什么想法吗?

最佳答案

这是我为您创建的一种方法,可以将特定颜色替换为您想要的颜色。请注意,位图上的所有像素都将被扫描,只有相同的像素才会被替换为您想要的像素。

     private Bitmap changeColor(Bitmap src, int colorToReplace, int colorThatWillReplace) {
int width = src.getWidth();
int height = src.getHeight();
int[] pixels = new int[width * height];
// get pixel array from source
src.getPixels(pixels, 0, width, 0, 0, width, height);

Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());

int A, R, G, B;
int pixel;

// iteration through pixels
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
// get current index in 2D-matrix
int index = y * width + x;
pixel = pixels[index];
if(pixel == colorToReplace){
//change A-RGB individually
A = Color.alpha(colorThatWillReplace);
R = Color.red(colorThatWillReplace);
G = Color.green(colorThatWillReplace);
B = Color.blue(colorThatWillReplace);
pixels[index] = Color.argb(A,R,G,B);
/*or change the whole color
pixels[index] = colorThatWillReplace;*/
}
}
}
bmOut.setPixels(pixels, 0, width, 0, 0, width, height);
return bmOut;
}

希望对您有所帮助:)

关于android - 替换位图中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18748694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com