我創建一個簡單的應用程序,具有以下特點:如何在iOS中對圖像進行像素化處理?
應用程序的第一頁將顯示來自服務器映像(當我們顯示這些圖像,我們應該像素化的話)的列表。
一旦用戶點擊任何像素化圖像,它會打開詳細視圖(在新的ViewController中打開像素化圖像)。
當用戶在詳細視圖控制器圖像上單擊時,它會減少其像素化級別,並且在點擊一下之後用戶可以看到真實圖像。
我的問題是我無法找到一種動態像素化所有這些東西的方法。請幫幫我。
我創建一個簡單的應用程序,具有以下特點:如何在iOS中對圖像進行像素化處理?
應用程序的第一頁將顯示來自服務器映像(當我們顯示這些圖像,我們應該像素化的話)的列表。
一旦用戶點擊任何像素化圖像,它會打開詳細視圖(在新的ViewController中打開像素化圖像)。
當用戶在詳細視圖控制器圖像上單擊時,它會減少其像素化級別,並且在點擊一下之後用戶可以看到真實圖像。
我的問題是我無法找到一種動態像素化所有這些東西的方法。請幫幫我。
GPUImage Framework有一個像素化濾鏡,因爲它使用GPUAcceleration,在圖像上應用濾鏡的速度非常快,您可以在運行時改變像素級別。
UIImage *inputImage = [UIImage imageNamed:<#yourimageame#>];
GPUImagePixellateFilter *filter = [[GPUImagePixellateFilter alloc] init];
UIImage *filteredImage = [filter imageByFilteringImage:inputImage];
我已經這樣做,但我有一些錯誤,請檢查此鏈接的截圖http://postimg.org/image/6vq9ovyu5/7d68104f/ – 2014-09-04 14:25:11
你必須按照指示該githubpage導入框架 – Andrea 2014-09-04 14:27:29
可以ü創建一個示例的例子..我試過了,它顯示我的錯誤 – 2014-09-04 14:43:00
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];
嘗試。快樂編碼
這是一項沉重的手術,不是嗎? – n00bProgrammer 2014-09-04 13:45:13
沒有它的一個簡單的一個塊可能是最多20行編碼 – sreekanthk 2014-09-04 13:53:23
像素化圖像的簡單方法是使用Core Image的CIPixellate
過濾器。
使用Core Image過濾器處理圖像的指令和示例代碼可以在Core Image Programming Guide中找到。
這非常光滑。我很驚訝(也很尷尬),我以前沒聽說過這個。 – n00bProgrammer 2014-09-04 13:50:34
我沒有看到該文檔中的任何像素對不起 – 2014-09-04 14:00:40
@Donkrisnp鏈接頁面上的列表1-1中的示例顯示了使用'CISepiaTone'進行過濾,但這只是爲了說明這個過程。您可以輕鬆修改代碼以使用不同的過濾器(如'CIPixellate'),並根據所選過濾器的文檔爲任何適當的鍵設置值。 – Caleb 2014-09-04 14:06:47
我想你可以使用UIImageJPEGRepresentation(圖像,可壓縮性)越低的壓縮質量越高。所以我的建議是採取4 UIImages,並將壓縮率從1降低到0.2並存儲它們。當用戶第一次敲擊以0.2壓縮率顯示圖像時,當他再次敲擊時通過降低質量等來顯示具有0.4可壓縮性的圖像。如果你想扭轉方法 – sreekanthk 2014-09-04 13:29:10
嗨,你有任何示例代碼或鏈接? – 2014-09-04 13:31:18
好吧,讓我試試謝謝 – 2014-09-04 13:38:56