2015-02-17 67 views
0

我有一個白色的圖標和標題的綠色按鈕。我正在嘗試使用我剛剛瞭解的將綠色更改爲藍色的GPUImage庫,但將白色保留爲白色。這裏是我的代碼:GPUImage GPUImageFalseColorFilter給出錯誤的顏色和着色透明區域

UIImage *inputImage = [UIImage imageNamed:@"pause-button"]; 
GPUImageFalseColorFilter *colorSwapFilter = [[GPUImageFalseColorFilter alloc] init]; 
colorSwapFilter.firstColor = (GPUVector4){0.0f, 0.0f, 1.0f, 1.0f}; 
colorSwapFilter.secondColor = (GPUVector4){1.0f, 1.0f, 1.0f, 1.0f}; 
UIImage *filteredImage = [colorSwapFilter imageByFilteringImage:inputImage]; 

有2個問題:

  1. 產生的圖像是一個淺紫色而不是藍色。幾乎好像藍色被覆蓋了50%的不透明度或某種東西,而原始的綠色被設置爲白色。
  2. 該按鈕不是一個矩形(更像一個橢圓形),並且PNG的透明區域(角落)現在用半透明藍色(實際上是淺紫色)填充。基本上這個按鈕現在是一個橢圓形的中間長方形。

我是否錯誤地使用了此過濾器?在使用此過濾器之前,我必須做一些預處理嗎?

回答

1

GPUImageFalseColorFilter可能不是你想用來改變某物的色調。它是Core Image中同名濾鏡的重新實現,它首先將圖像轉換爲亮度,然後用一種顏色替換白色,用另一種顏色替換黑色。而不是灰度,你會得到這些顏色之間的變量混合。我也不認爲它目前尊重alpha通道。

你可能想要更像GPUImageHueFilter的東西(再次,不知道它是否尊重alpha)或GPUImageLookupFilter。您可能需要構建一個自定義過濾器,以便在特定閾值內查找顏色(請查看色度鍵控),並用您指定的顏色替換該顏色。不過,色相變化可能會完成這項工作。