2011-12-14 58 views
0

我看到一些類似謎題的應用程序。它首先要求選擇一幅圖像,並將它們切片並隨機放入4×4或5×5的方格中。一個正方形將是空的,用戶可以通過將圖像滑動到空槽來重新排列它們。通過編碼切片圖片

我知道如何滑動圖像。但主要任務是如何將它們變成更小的圖像? 這可能嗎?

回答

0

不知道這是最有效的方式,但我認爲它應該工作。

將圖像加載到希望切片的大小的UIImageView中,因此我們使用480x320圖像作爲示例。讓我們把它分成9個部分,一個3x3的網格。這將使每件160x106(大致,320不等於3除)

因此,創建您的UIImageView大小爲160x106,將image屬性設置爲您的完整大小的圖像。然後將圖像視圖的contentMode設置爲UIViewContentModeScaleAspectFill,以便剪切不在視圖中的區域。我沒有嘗試過,但我認爲這會給你網格左上角的位置1,1。

現在,您可以根據內存效率/性能進行選擇,您將不得不測試哪種最佳。

選項1

繼續針對每個切片執行此操作,但使得正在顯示的圖像的正確部分,其餘的被修剪設置的UIImage的幀。所以你的位置1,2的框架看起來像CGRectMake(106, 0, 106, 160)的位置2,2這將是CGRectMake(106*2, 160, 106, 160)等等。

這是導致完整圖像被加載到內存9次,這可能會或可能不會是一個問題。您將不得不對內存使用情況進行一些分析。

選項2

一旦你創建在你的UIImageView的「切片」,關閉保存上下文,你以後會加載到適當的UIImageViews的一個文件。

以下代碼演示了將UIView的上下文保存到UIImage的一種方法。

UIGraphicsBeginImageContext(yourView.frame.size); 
[[yourView layer] renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *imageOfView = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

然後,您可以將此UIImage保存到磁盤並使用適當的名稱加載到適當的片中。