2013-07-03 81 views
1

我想要替換圖像中的顏色,它被分配到imageview我在谷歌搜索很多時間,但仍然沒有找到任何有用的資源。我已經看到在java rgbimagefilter但它不在Android的使用,因此下面的截圖我的除外輸出:在Android的色彩替代品

原始圖像

enter image description here

後更換綠三色爲灰色像下面的圖像:

enter image description here

我知道像read image這樣的基本概念每個像素比較rgb值的匹配取代新顏色,但我不知道如何在android中以編程方式做到這一點。

+0

http://developer.android.com/reference/android/graphics/Bitmap.html get/setPixel ... – Selvin

+0

@Selvin如何讀取每個像素的RGB和它的比較操作image.can你我任何代碼片段? –

回答

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用戶的answersite上找到。