Android中的Color Replacer

时间:2013-07-03 10:20:32

标签: android image-processing colorfilter

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

原始图片

enter image description here

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

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

Aviary SDK -> And the code for it.

Here您可以找到适合各种图像处理的精彩教程。

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

最后这个项目here

读得很好: - )

答案 1 :(得分: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用户siteanswer上找到的。