ios中UIImageView展現圖片的不同處理方式

來源:互聯網
上載者:User

原文連結:http://www.cnblogs.com/lovecode/archive/2011/11/27/2265275.html#commentform

iPhone映像通常儲存在以下4個地方:

  • 相簿(PhotoAlums):使用者可以使用UIImagePickerController類提供的互動對話方塊從該相簿中擷取映像。
  • 應用程式套件組合:將映像與可執行程式、Info.plist檔案和其他資源一同儲存,使用者可以通過本地檔案路徑由imageNamed:方法來讀取這些基於包的映像。
  • 沙箱:藉助沙箱,可以將檔案儲存體到Documents、Library和tmp檔案夾中。
  • 網際網路(Internet):應用程式可通過URL資源從網上下載映像。

影像檔的位置決定著讀取該檔案的具體方式。相簿中的圖片及其路徑無法直接從應用程式訪問,只有終端使用者能夠瀏覽和選擇映像,使所選映像對應用程式可用。映像也不能由URL直接初始化。映像源不同讀取方式也不同:

1. 從應用程式套件組合載入映像

UIImage類提供了一種載入應用程式套件組合中儲存的任意映像的簡單方法,即通過檔案名稱及其副檔名調用imageNamed:方法。

myImage = [UIImage imageNamed:@"icon.png"];

為避免本地映像緩衝及其有效利用記憶體空間的問題,還可用imageWithContentsOfFile:替換,這個方法會返回從某一具體路徑中載入的映像,這個路徑需以參數形式提供。當然,若要從應用程式套件組合中擷取映像路徑,可以查詢NSBundle類為給定資源尋找路徑。範例程式碼:

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];myImage = [UIImage imageWithContentsOfFile:path];

2. 從沙箱載入映像

預設情況下,每個沙箱包含3個檔案夾:Documents、Library和tmp。映像等由應用程式產生的資料通常位於Documents檔案夾內。在iPhone開發中可以通過調用工具 + 生產力主目錄函式可靠地定位頂級沙箱檔案夾。通過NSHomeDirectory()返回結果,我們可以向下導航一級到Documents檔案夾,完全可以保證正確的位置。範例程式碼:

NSString *documentsFolder(){     return [NSHomeDirectory()             stringByAppendingPathComponent:@"Documents"];}// 載入映像path = [documentsFolder() stringByAppendingPathComponent:@"image.png"];return [UIImage imageWithContentsOfFile:path];

3. 從URL資源載入映像

UIImage類可以從NSData執行個體載入映像,但它不能直接從URL字串或NSURL對象載入映像。因此,只能為UIImage提供已經從URL下載的資料(即要建立由URL內容初始化的NSData執行個體)。

NSURL  *url = [NSURL URLWithString:@"http://www.cnblogs.com/lovecode/images/demo.jpg"];UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url];// 類似地我們可以直接建立個類方法// 由具體的一個URL字串,返回通過該資源構建的UIImage+ (UIImage *) imageFromURLString: (NSString *) urlstring{    return  [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlstring]]];}

4. 從相簿載入資料

UIImagePickerController類協助我們從iPhone相簿中選擇映像。它提供一個獨立的視圖控制器,以模態形式呈現視圖。該控制器發回的委託訊息能夠反映使用者選擇的映像。

  • UIImagePickerControllerSourceTypePhotoLibrary 所有同步到iPhone的映像以及包括使用者拍攝的圖片在內的任何相簿。
  • UIImagePickerControllerSourceTypeSavedPhotosAlbum 僅含相簿。
  • UIImagePickerControllerSourceTypeCamera 允許使用者使用iPhone內建的網路攝影機拍照。

映像拾取器的委託必須遵守兩個協議:UINavigationControllerDelegate和UIImagePickerControllerDelegate。在介面中一定要為設定為拾取器委託的對象聲明這兩個協議。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.