4

I'm using SDWebImage to load images in my iOS app and I now want to use the webp format.

Here's my first try :

NSURL *url = [NSURL URLWithString:@"http://www.gstatic.com/webp/gallery/2.webp"];

[self.imageView setImageWithURL:url
               placeholderImage:nil
                        options:SDWebImageProgressiveDownload
 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {

     if (error) {

         UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

         [av show];
     }
 }];

It would work perfectly if the image was a jpeg (I tried) but with a webp it doesn't. The first time I call this code the error is :

Downloaded image has 0 pixels

Then the error turns to :

The operation couldn't be completed. (NSURLErrorDomain error -1100.)

What's wrong?

4

5 に答える 5

9

追加

pod 'SDWebImage/WebP'

podfile に追加し、pod install を押します。Cocoapods は、プリプロセッサ フラグも処理します。

SDWebImage github ページから

現在、Core、MapKit、および WebP の 3 つのサブスペックが利用可能です (これは、SDWebImage モジュールの一部のみをインストールできることを意味します。デフォルトでは Core のみを取得するため、WebP が必要な場合はそれを指定する必要があります)。

于 2015-11-20T21:16:16.030 に答える
9

実際には上記のコードは機能するはずですが、webp サポートはライブラリでデフォルトで無効になっています。

SD_WEBP=1(ビルド設定で) sdwebimage ターゲットのプリプロセッサ マクロを追加すると、webp サポートが有効になります。

于 2013-08-04T14:27:54.327 に答える
4

最終的にここにつながる多くの投稿を検索しました。そして、githubで尋ねた後の私の解決策は次のとおりです。

https://github.com/rs/SDWebImage/issues/1122

手順:

1:Clone追加WebP.framework

を使用してリポジトリのクローンを作成しますgit clone --recursive https://github.com/rs/SDWebImage.git

SDWebImageの完全なフォルダーをプロジェクトに追加WebP.frameworkします。

画像

2: Build Settings--Preprocessor Macrosに を追加しSD_WEBP=1ます。

画像

ps: を使用している場合CocoaPods、 に追加する方法がわからないので、プロジェクトにファイルを追加することを選択しますWebP.frameworkSDWebImage

于 2015-04-13T09:55:18.447 に答える
4

Swift 5 と Xcode 11

podfile でポッドを使用する

pod 'SDWebImageWebPCoder'

このライブラリをインポート

import SDWebImageWebPCoder

AppDelegate 'didFinishLaunchingWithOptions' の下でこのコードを使用します

let WebPCoder = SDImageWebPCoder.shared
SDImageCodersManager.shared.addCoder(WebPCoder)

ViewController 'viewDidLoad'の下でこのコードを使用してください

@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
    super.viewDidLoad()

    //load from server
    let onlineFileUrl = URL(string: "http://www.gstatic.com/webp/gallery/2.webp")
     //load from project directory
        let loaclFileUrl = Bundle.main.url(forResource: "2", withExtension: "webp")
    DispatchQueue.main.async {
        self.imageView.sd_setImage(with: onlineFileUrl)
    }

}
于 2019-09-28T06:04:35.703 に答える
0

Objective-C

podfile でポッドを使用する

pod 'SDWebImageWebPCoder'

このライブラリをインポート

#import <SDWebImageWebPCoder.h>

AppDelegate 'didFinishLaunchingWithOptions' の下でこのコードを使用します

SDImageWebPCoder *WebPCoder = [SDImageWebPCoder sharedCoder];
[[SDImageCodersManager  sharedManager] addCoder:WebPCoder];

画像をダウンロードする

[self.yourImage sd_setImageWithURL:[NSURL URLWithString:@"your_url_webp" placeholderImage:[UIImage imageNamed:@"placeholder"]];
于 2020-11-04T13:59:32.003 に答える