2017-09-14 27 views
0

我想反轉黑白圖像的顏色並將該反轉顯示爲動畫。 動畫應從白色背景變爲黑色(黑色背景白色汽車),然後恢復爲白色(白色背景,黑色汽車)。 你可以在這裏看到的影像: enter image description here animated使用ColorMatrixColorFilter反轉顏色(負)

我試圖用ColorMatrixColorFilter這樣的:

final ValueAnimator colorAnim = ValueAnimator.ofInt(0, 255); 
    colorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      int color = (int) animation.getAnimatedValue(); 
      float[] NEGATIVE = { 
        -1.0f, 0, 0, 0, color, // red 
        0, -1.0f, 0, 0, color, // green 
        0, 0, -1.0f, 0, color, // blue 
        0, 0, 0, 1.0f, 1 // alpha 
      }; 
      v.setColorFilter(new ColorMatrixColorFilter(NEGATIVE)); 
     } 
    }); 

但它不會返回到默認的圖像(白色背景,黑色的車)。 計算不好。 如何計算適當的值?

我試圖找到如何做到這一點,但我沒有發現任何有用的東西。

謝謝!

回答

0

你嘗試:

1)從加載圖像,創建兩個副本位圖到變量,例如:bmp_originalbmp_negative

2)Apply the ColorMatrix to the bitmap調用bmp_negative

3)創建一個在兩個位圖之間淡入淡出的函數(或淡化它們的容器)。

這比試圖通過ColorMatrix恢復原始顏色(錯誤的工具)要好。對於反轉的顏色,最好使用For循環來檢查和更改每個像素的RGB值。

最後,保留原件和原件之間的翻轉以及在原件和受影響件之間翻轉比試圖重新計算原始顏色(在效果之前已經擁有的顏色)更容易和更有效。