1

我想替换图像中的颜色并将其分配给 imageview 我在 google 中搜索了很多时间,但仍然没有找到任何有用的资源。我在 java rgbimagefilter 中看到过,但是它没有在 android 中使用,所以我的输出除外下面的截图:

原始图像

在此处输入图像描述

将绿色替换为灰色后,如下图所示:

在此处输入图像描述

我知道基本的想法,比如读取图像每个像素比较 rgb 值,因为它的匹配替换为新颜色,但我不知道如何在 android 中以编程方式做到这一点。

4

2 回答 2

2

以下是一些建议(下次尝试搜索图像处理;-)):

Aviary SDK -> 以及它的代码。

在这里你可以找到一个很好的关于各种图像处理的教程。

在这里您可以找到一些库:

最后这个项目在这里

阅读愉快:-)

于 2013-07-03T10:25:54.783 回答
0

如果您不想使用任何第三方库,可以检查以下代码以帮助您入门:

package pete.android.study;

import android.graphics.Bitmap;

public class ImageProcessor {
    Bitmap mImage;
    boolean mIsError = false;

public ImageProcessor(final Bitmap image) {
    mImage = image.copy(image.getConfig(), image.isMutable());
    if(mImage == null) {
        mIsError = true;
    }
}

public boolean isError() {
    return mIsError;
}

public void setImage(final Bitmap image) {
    mImage = image.copy(image.getConfig(), image.isMutable());
    if(mImage == null) {
        mIsError = true;
    } else {
        mIsError = false;
    }
}

public Bitmap getImage() {
    if(mImage == null){
        return null;
    }
    return mImage.copy(mImage.getConfig(), mImage.isMutable());
}

public void free() {
    if(mImage != null && !mImage.isRecycled()) {
        mImage.recycle();
        mImage = null;
    }
}

public Bitmap replaceColor(int fromColor, int targetColor) {
    if(mImage == null) {
        return null;
    }

    int width = mImage.getWidth();
    int height = mImage.getHeight();
    int[] pixels = new int[width * height];
    mImage.getPixels(pixels, 0, width, 0, 0, width, height);

    for(int x = 0; x < pixels.length; ++x) {
        pixels[x] = (pixels[x] == fromColor) ? targetColor : pixels[x];
    }

    Bitmap newImage = Bitmap.createBitmap(width, height, mImage.getConfig());
    newImage.setPixels(pixels, 0, width, 0, 0, width, height);

    return newImage;
    }
}

此代码不是我的,是从另一个 SO 用户的答案在此站点上找到的。

于 2013-07-03T10:30:12.340 回答