2012-09-26 17 views
3

我正在一個android項目中,我必須改變牆的顏色。對於e.x,如果我拍攝有拐角的牆,並選擇某種顏色,則表示藍色。牆壁的顏色應該改變,牆壁看起來就像是用這種顏色塗漆的。我的意思是說改變顏色後應該保留牆角處的陰影。牆不應該看起來像繪製像扁平的矩形。如何更改位圖的顏色並保留位圖中的陰影?

請讓我知道如何做到這一點。

在此先感謝。 問候

回答

0

這是我做的事得到它完成:

public static Bitmap changeImageColor(Bitmap srcBmp, int dstColor) { 

    int width = srcBmp.getWidth(); 
    int height = srcBmp.getHeight(); 

    float srcHSV[] = new float[3]; 
    float dstHSV[] = new float[3]; 

    Bitmap dstBitmap = Bitmap.createBitmap(width, height, Config.RGB_565); 

    for (int row = 0; row < height; row++) { 
     for (int col = 0; col < width; col++) { 
      Color.colorToHSV(srcBmp.getPixel(col, row), srcHSV); 
      Color.colorToHSV(dstColor, dstHSV); 

      // If it area to be painted set only value of original image 
      dstHSV[2] = srcHSV[2]; // value 

      dstBitmap.setPixel(col, row, Color.HSVToColor(dstHSV)); 
     } 
    } 

    return dstBitmap; 
} 
+1

如果性能很重要,那麼使用簡單的着色器就可以將性能提高大約10,000倍。 – Lee