簡體   English   中英

使用 SDWebImage 下載圖像,錯誤 -999(或)SDWebImageErrorDomain Code=0 “下載的圖像有 0 像素

[英]Download image using SDWebImage, error -999 (or) SDWebImageErrorDomain Code=0 "Downloaded image has 0 pixels

我無法使用 SDWebImage 4.4.5 版本在 Objective c 中下載圖像。我嘗試了以下方法,但沒有任何效果。

嘗試 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 "cancelled" 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:嘗試使用郵遞員下載圖像。 請檢查圖像。 在我升級到 SDWebImage v4.4.5 后,相同的圖像 URL 在 SDWebImage v3.5.4 上工作,它沒有放置圖像。

我缺少任何配置嗎? 還安裝了 pod 'SDWebImage/WebP',在 Build settings -> Preprocessor macros 中添加了 SD_WEBP=1。

錯誤:Error Domain=SDWebImageErrorDomain Code=0 “下載的圖像有 0 個像素” UserInfo={NSLocalizedDescription=下載的圖像有 0 個像素}

在此處輸入圖片說明

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

授權:郵箱:kkk1@ler.com,代幣:A-BE3D-WER3-847F-ER6YG5678G

基本上,如果 URL 包含圖像,則 SDWebImage 從任何 URL 下載它們都沒有問題。

但是在您的情況下,您嘗試從 JSON 獲取圖像。 您的服務器 API 返回一個 JSON 對象,其中包含base64String的圖像。 當您獲得 JSON 響應時,您需要從 json 獲取base64String ,然后從base64String創建一個圖像。

您可以使用此方法使用Objective C將字符串解碼為圖像。

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {
  NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];
  return [UIImage imageWithData:data];
}

首先,更新 pod 並嘗試 SDWebImage pod 版本 3.8.2。

第二件事是檢查您的圖片網址。 因為我個人使用此 pod 版本測試圖像下載並且下載功能正在運行。

我遇到了同樣的問題,我正在嘗試 webP 圖像。 后來我意識到我需要將 webP 編碼器添加到 SDImageCodersManager。 就像是

SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)

我在 AppDelegate 中做到了這一點。

如果您在 SDWebImage 庫中遇到此類類型問題,您也可以使用其他支持 base64 字符串對象的庫

我發現的最好的圖書館之一是“翠鳥

希望你喜歡這個,它會解決你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM