2014-09-04 75 views
-2

我創建一個簡單的應用程序,具有以下特點:如何在iOS中對圖像進行像素化處理?

  1. 應用程序的第一頁將顯示來自服務器映像(當​​我們顯示這些圖像,我們應該像素化的話)的列表。

  2. 一旦用戶點擊任何像素化圖像,它會打開詳細視圖(在新的ViewController中打開像素化圖像)。

當用戶在詳細視圖控制器圖像上單擊時,它會減少其像素化級別,並且在點擊一下之後用戶可以看到真實圖像。

我的問題是我無法找到一種動態像素化所有這些東西的方法。請幫幫我。

+0

我想你可以使用UIImageJPEGRepresentation(圖像,可壓縮性)越低的壓縮質量越高。所以我的建議是採取4 UIImages,並將壓縮率從1降低到0.2並存儲它們。當用戶第一次敲擊以0.2壓縮率顯示圖像時,當他再次敲擊時通過降低質量等來顯示具有0.4可壓縮性的圖像。如果你想扭轉方法 – sreekanthk 2014-09-04 13:29:10

+0

嗨,你有任何示例代碼或鏈接? – 2014-09-04 13:31:18

+0

好吧,讓我試試謝謝 – 2014-09-04 13:38:56

回答

5

GPUImage Framework有一個像素化濾鏡,因爲它使用GPUAcceleration,在圖像上應用濾鏡的速度非常快,您可以在運行時改變像素級別。

UIImage *inputImage = [UIImage imageNamed:<#yourimageame#>]; 
GPUImagePixellateFilter *filter = [[GPUImagePixellateFilter alloc] init]; 
UIImage *filteredImage = [filter imageByFilteringImage:inputImage]; 
+0

我已經這樣做,但我有一些錯誤,請檢查此鏈接的截圖http://postimg.org/image/6vq9ovyu5/7d68104f/ – 2014-09-04 14:25:11

+0

你必須按照指示該githubpage導入框架 – Andrea 2014-09-04 14:27:29

+0

可以ü創建一個示例的例子..我試過了,它顯示我的錯誤 – 2014-09-04 14:43:00

-1

UIImage *yourImage = [UIImage imageNamed:@"yourimage"]; NSData *imageData1 = UIImageJPEGRepresentation(yourImage, 0.2); NSData *imageData2 = UIImageJPEGRepresentation(yourImage, 0.3);

等高達

NSData *imageDataN = UIImageJPEGRepresentation(yourImage, 1);

顯示爲imageData用的以下幫助:

UIImage *compressedImage = [UIImage imageWithData:imageData1];

嘗試。快樂編碼

+1

這是一項沉重的手術,不是嗎? – n00bProgrammer 2014-09-04 13:45:13

+0

沒有它的一個簡單的一個塊可能是最多20行編碼 – sreekanthk 2014-09-04 13:53:23

3

像素化圖像的簡單方法是使用Core Image的CIPixellate過濾器。

使用Core Image過濾器處理圖像的指令和示例代碼可以在Core Image Programming Guide中找到。

+0

這非常光滑。我很驚訝(也很尷尬),我以前沒聽說過這個。 – n00bProgrammer 2014-09-04 13:50:34

+0

我沒有看到該文檔中的任何像素對不起 – 2014-09-04 14:00:40

+0

@Donkrisnp鏈接頁面上的列表1-1中的示例顯示了使用'CISepiaTone'進行過濾,但這只是爲了說明這個過程。您可以輕鬆修改代碼以使用不同的過濾器(如'CIPixellate'),並根據所選過濾器的文檔爲任何適當的鍵設置值。 – Caleb 2014-09-04 14:06:47

相關問題