1

画像の色を置き換えたいのですが、imageview に割り当てられています。Google で何度も検索していますが、有用なリソースが見つかりませんでした。以下のスクリーンショット:

元の画像

ここに画像の説明を入力

下の画像のように緑色を灰色に置き換えた後:

ここに画像の説明を入力

画像を読み取って各ピクセルを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 に答える