Saya memiliki URL untuk gambar (mendapatkannya dari UIImagePickerController) tetapi saya tidak lagi memiliki gambar dalam memori (URL disimpan dari menjalankan aplikasi sebelumnya). Bisakah saya memuat ulang UIImage dari URL lagi?
Saya melihat bahwa UIImage memiliki imageWithContentsOfFile: tetapi saya memiliki URL. Bisakah saya menggunakan data NSDataWithContentsOfURL: untuk membaca URL?
EDIT1
berdasarkan jawaban @ Daniel saya mencoba kode berikut tetapi tidak berhasil ...
NSLog(@"%s %@", __PRETTY_FUNCTION__, photoURL);
if (photoURL) {
NSURL* aURL = [NSURL URLWithString:photoURL];
NSData* data = [[NSData alloc] initWithContentsOfURL:aURL];
self.photoImage = [UIImage imageWithData:data];
[data release];
}
Ketika saya menjalankannya konsol menunjukkan:
-[PhotoBox willMoveToWindow:] file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG
*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0'
Melihat tumpukan panggilan, saya memanggil URLWithString, yang memanggil URLWithString: relatifToURL :, lalu initWithString: relatifToURL :, lalu _CFStringIsLegalURLString, lalu CFStringGetLength, lalu meneruskan , _ forward , bukan proyek.
Adakah ide mengapa NSString saya (alamat photoURL 0x536fbe0) tidak menanggapi panjang? Mengapa dikatakan tidak merespons - [Panjang NSURL]? Tidakkah ia tahu bahwa param adalah NSString, bukan NSURL?
EDIT2
OK, satu-satunya masalah dengan kode adalah konversi string ke URL. Jika saya hardcode string, semuanya berjalan dengan baik. Jadi ada yang salah dengan NSString saya dan jika saya tidak bisa mengetahuinya, saya kira itu harus masuk sebagai pertanyaan yang berbeda. Dengan baris ini dimasukkan (saya menempel jalur dari konsol log di atas), itu berfungsi dengan baik:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";
sumber
Jawaban:
Anda dapat melakukannya dengan cara ini (secara sinkron, tetapi kompak):
Pendekatan yang jauh lebih baik adalah dengan menggunakan LazyTableImages Apple untuk menjaga interaktivitas.
sumber
Anda dapat mencoba SDWebImage , ini menyediakan:
Contoh cepat:
sumber
UIImageView
.SDWebImage
juga memungkinkan Anda mengisiUIImage
langsung menggunakanSDWebImageManager
- (void) downloadWithURL:...
. Lihat contoh mereka di baca saya.Dan versi cepat:
sumber
Jika Anda benar-benar , benar-benar positif yakin bahwa NSURL adalah url file yaitu
[url isFileURL]
dijamin untuk kembali benar dalam kasus Anda, maka Anda dapat menggunakan:sumber
dapatkan DLImageLoader dan coba kode berikut
Contoh dunia nyata tipikal lainnya menggunakan DLImageLoader, yang dapat membantu seseorang ...
Seperti yang saya sebutkan di atas perpustakaan besar lain untuk mempertimbangkan hari ini adalah Haneke (sayangnya itu tidak ringan).
sumber
Coba kode ini, Anda dapat mengatur memuat gambar dengan itu, sehingga pengguna tahu bahwa aplikasi Anda memuat gambar dari url:
sumber
Lihat yang
AsyncImageView
disediakan di sini . Beberapa kode contoh yang baik, dan bahkan dapat digunakan langsung "di luar kotak" untuk Anda.sumber
AFNetworking menyediakan pemuatan gambar async ke dalam UIImageView dengan dukungan placeholder. Ini juga mendukung jaringan async untuk bekerja dengan API secara umum.
sumber
Pastikan untuk mengaktifkan pengaturan ini dari iOS 9:
Pengaturan Keamanan Transport Aplikasi di Info.plist untuk memastikan memuat gambar dari URL sehingga memungkinkan unduhan gambar dan mengaturnya.
Dan tulis kode ini:
sumber
Cara menggunakan Swift Extension to
UIImageView
(kode sumber di sini ):Membuat Properti Terhitung untuk Associated
UIActivityIndicatorView
Initializer dan Setter Kustom
sumber
Cara terbaik dan mudah untuk memuat Gambar melalui Url adalah dengan Kode ini:
Ganti
imgUrl
dengan AndaImageURL
Ganti
imgView
dengan AndaUIImageView
.Itu akan memuat gambar di utas lain, jadi itu tidak akan memperlambat beban aplikasi Anda.
sumber