cari

Rumah  >  Soal Jawab  >  teks badan

iOS图片加载(imageData)

微信和微博分享的对于原生封装的加载图片的方法如下:

+ (NSData )loadImageDataWithImageUrl:(NSString )urlString {

NSURL *url = [NSURL URLWithString:urlString];
SDImageCache *imageCache = [SDImageCache sharedImageCache];
UIImage *image = nil;
NSData *imageData = nil;
//有缓存,从缓存中去图片

if ([imageCache imageFromMemoryCacheForKey:urlString]) {

image = [imageCache imageFromMemoryCacheForKey:urlString];

imageData = UIImageJPEGRepresentation(image, 1.0);

}else if ([imageCache imageFromDiskCacheForKey:urlString]) {

image = [imageCache imageFromDiskCacheForKey:urlString];

imageData = UIImageJPEGRepresentation(image, 1.0);

}else{

//缓存中没有图片去下载
imageData = [NSData dataWithContentsOfURL:url];
}
return imageData;
}

现在 : imageData = [NSData dataWithContentsOfURL:url]; 这句代码的效率极低,导致分享会很慢,现在求优化方法,望各位大神指点!

高洛峰高洛峰2889 hari yang lalu355

membalas semua(3)saya akan balas

  • 怪我咯

    怪我咯2017-04-18 09:32:25

    Bukankah anda menulis: Tiada muat turun dalam cache... semuanya dimuat turun Ia mesti sangat perlahan menggunakan kaedah asas ini.
    Saya tidak begitu faham, kerana SDWebImage digunakan, mengapa kita perlu menulis kaedah lain untuk memuatkanImageData


    Tambahan

    Muat turun imej UIImage dan kemudian tukarkannya kepada data
    Bukankah cache anda sama seperti mengeluarkan imej dan menukarnya kepada data?

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:32:25

    @Curiousity Jika ia tiada dalam cache, ia perlu dimuat turun Adakah terdapat kaedah yang lebih baik daripada imageData = [NSData dataWithContentsOfURL:url]; ? Saya telah melihat SDWebImage, tetapi tidak ada cara untuk memuat turun imageData secara langsung!

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:32:25

    Cuba ini secara tak segerak
    SDWebImageDownloader.h

    - (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
                                             options:(SDWebImageDownloaderOptions)options
                                            progress:(SDWebImageDownloaderProgressBlock)progressBlock
                                           completed:(SDWebImageDownloaderCompletedBlock)completedBlock;
    

    balas
    0
  • Batalbalas