Загрузка изображения с использованием SDWebImage, ошибка -999 (или) SDWebImageErrorDomain Code = 0 "Загруженное изображение имеет 0 пикселей - PullRequest
0 голосов
/ 05 февраля 2019

Я не могу загрузить изображение в Objective c Используя версию SDWebImage 4.4.5., Я попробовал следующее, ничего не получилось.

Попробуйте 1:

[self.thumbnailImageView sd_setImageWithURL:[NSURL URLWithString:thumbnailURLString] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {

}];

Попробуйте 2:

[self.thumbnailImageView sd_setImageWithURL:[NSURL URLWithString:thumbnailURLString] placeholderImage:nil options:SDWebImageRefreshCached completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { if(image != nil){
            self.thumbnailImageView.image = image;                
        } else {
            NSLog(@"Photo Not Available, fetch");
            [self.thumbnailImageView sd_setImageWithURL:[NSURL URLWithString:thumbnailURLString] placeholderImage:nil options:SDWebImageRefreshCached completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
                if(image != nil) { NSLog(@"Lo Res Image Loaded by %ld from '%@'", (long)cacheType, imageURL);
                    self.thumbnailImageView.image = image;

                } else {
                    self.thumbnailImageView.image = nil;

                } }];

        } }];

Попробуйте 3:

[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:thumbnailURLString] options:SDWebImageDownloaderUseNSURLCache progress:nil completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {


        }];

Попробуйте 4:

SDWebImageManager *manager = [SDWebImageManager sharedManager];

        [manager loadImageWithURL:[NSURL URLWithString:thumbnailURLString] options:SDWebImageDelayPlaceholder progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
        } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {

        }];

Попробуйте 5:

SDWebImageDownloader *manager = [SDWebImageManager sharedManager].imageDownloader;
        [manager setValue:@"application/vnd.learning.events.v1+json" forHTTPHeaderField:@"Accept"];
        [manager setValue:@"en-US" forHTTPHeaderField:@"Accept-Language"];
        [manager setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        //[manager setValue:savedEmail forHTTPHeaderField:@"Email"];
        [manager setValue:savedToken forHTTPHeaderField:@"Authorization"];
        [manager downloadImageWithURL:[NSURL URLWithString:thumbnailURLString] options:SDWebImageDownloaderHighPriority progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
        } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
            self.thumbnailImageView.image = image;
        }];

Во всех вышеописанных случаях выдается следующая ошибка:

Ошибка домена = NSURLErrorDomain Code = -999 "отменен" UserInfo = {NSErrorFailingURLStringKey = https://thisisnotcorrecturl.net/api/BAImage?ActionFlagId=97&id=615, NSErrorFailingURLKey = https://thisisnotcorrecturl.net/api/BAImage?ActionFlagId=97&id=615, _NSURLErrorRelatedURLSessionTaskErrorKey = ( "LocalDataTask <92586538-B07D-46FB-8694-3B29AA3F0CB4>. <7>"), _NSURLErrorFailingURLSessionTaskErrorKey = LocalDataTask <92586538-B07D-46FB-8694-3B29AA3F0CB4>. <7>, NSLocalizedDescription = отменен}

Ранее мы использовали используемую версию v3.5.4, способную загрузить изображение с помощью следующего кода.Работает хорошо.

[self.thumbnailImageView setImageWithURL:[NSURL URLWithString:thumbnailURLString]
                            placeholderImage:nil
                                   completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
                                       if (image != nil){
                                           self.thumbnailImageView.image = [self imageResizingToAspetRatio:image];

                                       }
                                   }];

Пожалуйста, дайте мне знать, если сделали какую-либо ошибку, или какие-либо предложения.

Обновление 1: Попытка загрузить изображение с помощью почтальона.Пожалуйста, проверьте изображение.Этот же URL-адрес изображения работает в SDWebImage v3.5.4 после того, как я обновил его до SDWebImage v4.4.5, он не размещает образ.

Есть ли какие-либо конфигурации, которые мне не хватает?Установленный модуль 'SDWebImage / WebP' также добавлен SD_WEBP = 1 в Параметры сборки -> Макросы препроцессора.

Ошибка: Ошибка домена = SDWebImageErrorDomain Code = 0 "Загруженное изображение имеет 0 пикселей" UserInfo = {NSLocalizedDescription= Загруженное изображение имеет 0 пикселей}

enter image description here

http://testingurl.net/api/Image?ActionFlagId=20&id=864

Авторизация: Email: kkk1@ler.com,Токен: A-BE3D-WER3-847F-ER6YG5678G

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

По сути, SDWebImage не имеет проблем с загрузкой их с любого URL, если URL содержит изображение.

Но в вашем случае вы пытались получить изображение из JSON.Ваш серверный API возвращает объект JSON, который содержит изображение как base64String.Когда вы получите ответ JSON, вам нужно получить base64String от json, а затем создать изображение из base64String.

. Вы можете использовать этот метод для декодирования строки в изображение, используя Objective C.

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {
  NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];
  return [UIImage imageWithData:data];
}
0 голосов
/ 01 апреля 2019

Если вы столкнулись с такой проблемой типа из библиотеки SDWebImage, вы можете пойти и с другой, поддерживающей строковый объект base64

Одна из лучших библиотек, которую я нашел, это " Kingfisher "

Надеюсь, вам понравится, и это решит вашу проблему.

0 голосов
/ 28 февраля 2019

Во-первых, обновите модуль и попробуйте SDWebImage версии 3.8.2.

И второе - проверьте URL вашего изображения.потому что я лично проверяю загрузку образа с этой версией модуля и работает функция загрузки.

...