8

現在、iOS ソフトウェアで Google の WebP 画像形式を使用する可能性を調査しています。

Google の C ライブラリを使用して、必要に応じて WebP を RGBA8888 にデコードすることは難しくありません。

ただし、API とパフォーマンスの両方の点で UIImage に匹敵する実装を作成したいと考えています。

Q1. ネイティブの imageWithData やその他の API が新しい形式を読み取るように、iOS で画像デコーダを開発することは可能ですか?

Q2. いいえの場合、UIImageView (およびその他のフレームワーク提供のコントロール) が UIImage を描画するために使用する API は何ですか? それは公開されていますか (例: drawInRect/drawAtPoint)、それとも内部ですか?

UIImage から継承し、いくつかのメソッド (+imageWithContentsOfFile、+imageWithData、+imageNamed、-drawInRect、-drawAtPoint など) をオーバーライドして、WPImage オブジェクトを SDK 提供の API で適切に動作させることはできますか?

Q3. 私の架空の WPImage クラスのすべてのインスタンスが UIApplicationDidReceiveMemoryWarningNotification をサブスクライブする場合 (RGBA イメージ バッファーをフラッシュして、はるかに小さい元の WebP データを RAM に残すため)、パフォーマンスはそれほど低下しませんか?

私たちが開発しているソフトウェアは、RAM に何百もの異なるイメージを簡単に持つことができます。

4

6 に答える 6

1

例 あり 。https://github.com/carsonmcdonald/WebP-iOS-example

于 2012-05-07T02:37:26.037 に答える
0

私が書いた別の例では、カーソンマクドナルドが始めたが、再利用可能な方法で作業を使用しています。基本的に、WebP.frameworkをプロジェクトに追加し(私の例に含まれているか、CarsonのWebサイトにある手順を使用して作成可能)、次のように実行できます。

#import "UIImage+WebP.h"
...

self.imageView.image = [UIImage imageFromWebP:@"path/to/image.webp"];
// or
[self.button setImage:[UIImage imageFromWebP:@"path/to/image.webp" 
        forState:UIControlStateNormal]];

私の例をご覧になりたい場合は、https ://github.com/nyteshade/iOSWebPWithAlphaExampleにアクセスしてください。

于 2013-03-17T06:42:33.707 に答える
0

まず、WebP ピクセルをバッファーにデコードします。次に、CGDataProviderCreateWithData() を呼び出して CoreGraphics の「データ プロバイダー」を作成し、次に CGImageCreate() を呼び出してプロバイダーと必要なすべての引数を渡す必要があります。最後に、UIImage インスタンスを作成するために、UIImage imageWithCGImage:imageRef を呼び出します。

于 2013-07-15T17:47:57.560 に答える