Я загружаю несколько файлов изображений из Интернета с помощью SDWebImageManager
. Я могу скачивать файлы с разрешением 2050 x 3500
. Ниже мой код жеСбой SDWebImageManager при загрузке файлов с большим разрешением изображений
SomeObj *limgObj = [imageinfoArray objectAtIndex:count];
__weak UIImageView *thumbImg_ = bannerImgView;
__weak typeof(self) weakSelf = self;
SDWebImageManager *manager = [SDWebImageManager sharedManager];
manager.delegate = weakSelf;
if([limgObj.imageUrl length] > 0) {
[manager downloadWithURL:[NSURL URLWithString:limgObj.imageUrl] options:0 progress:^(NSUInteger receivedSize, long long expectedSize)
{
[MMProgressHUD showWithTitle:@"" status:@"Processing.."];
} completed:^(UIImage *image,NSError *error, SDImageCacheType cacheType, BOOL finished) {
thumbImg_.image = image;
[MMProgressHUD dismiss];
}];
}
И если ширина или высоту изображения будет больше, чем 2000 год я его обработку в методе делегата понизить его перед Кэшированием нижеперечисленных
- (UIImage *)imageManager:(SDWebImageManager *)imageManager transformDownloadedImage:(UIImage *)image withURL:(NSURL *)imageURL
{
NSLog(@"ORIGINAL - > width -> %f height - >%f", image.size.width, image.size.height);
if (image.size.width > 2000 && image.size.width < 3000) {
CGSize newSize = CGSizeMake(image.size.width/1.5, image.size.height/1.5);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
NSLog(@"NEW - > width -> %f height - >%f", newImage.size.width, newImage.size.height);
UIGraphicsEndImageContext();
return newImage;
}.....>Multiple cases handled for bigger images omitted to make small code here
return image;
}
Но для изображений, как 4961 × 7016
которые являются только 557kb
, размер моего приложения падает с предупреждением о давлении памяти, даже не вызывающим мою функцию делегата transformDownloadedImage
и давая мне шанс понизить его до кэширования.
Пожалуйста, помогите мне выяснить, что я делаю неправильно здесь, и почему SDWebImageManager
не может скачать изображение с высоким разрешением на первом месте.
Благодаря
Эта информация будет действительна еще в 2007 году, но это 2015 здесь и iPhone 6+ имеет разрешение более 2k пикселей, и даже iPhone 4S поддерживает 4k текстуры. – Andy
Часть документации была обновлена менее 5 месяцев назад (см. Ссылку, которую я опубликовал: «Обновлено: 2015-01-12»). Хороший совет для вас, прочитайте дополнительную документацию по железу, прежде чем оценивать другие сообщения. – Elidemir
Я читаю их документацию последние 5 лет. Этот параграф существует уже много лет с момента выхода iOS 3.0 или, возможно, раньше. Обычно вам необходимо свести к минимуму все тяжелые операции на устройстве, но 1024 больше не ограничивается. – Andy