ダウンロード中にuiimageViewにプログレッシブJPEGを表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4741486

質問

ネットから画像をダウンロードして、uiimageviewで表示するのはかなり簡単です。ただし、これには、ユーザーに表示される前に画像を完全にダウンロードする必要があり、プログレッシブJPEG(およびPNG)画像を完全に打ち負かします。

転送中に部分的にダウンロードされた画像をレンダリングするにはどうすればよいですか? SDKが画像を更新するコールバック関数を持っていると想像しますが、そのような関数は見つかりません。現在のiOSSDKではまったく可能ですか?

役に立ちましたか?

解決

Receivedataが呼ばれたように、あなたはuiimageを部分的にレンダリングしようとしましたか?何かのようなもの …

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //TODO: add some error handling in case the image could not be created
    UIImage *img=[UIImage imageWithData:data];
    if (img) {
        self.imageView.image=img;
    }
}

他のヒント

この投稿には約1年があることは知っていますが、誰かがそれを探している場合に備えて、呼ばれるプロジェクトがあります nyximageskit それはあなたが探していることをします。

名前のクラスがあります NYXProgressiveImageView それはのサブクラスです UIImageView.

あなたがしなければならないのは:

NYXProgressiveImageView * imgv = [[NYXProgressiveImageView alloc] init];
imgv.frame = CGRectMake(0, 0, 320, 480);
[imgv loadImageAtURL:[NSURL URLWithString:@"http://yourimage"]];
[self.view addSubview:imgv];
[imgv release];

また、良い選択肢は、あなたの画像を次のように保存することです interlaced 低品質でロードされ、ダウンロードにより改善されるようにします。画像がインターレースされていない場合、上から下にロードされます。

Libjpeg-Turboの上に小さなオープンソースライブラリがあり、プログレッシブJPEGを簡単に解読して表示できます。

let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "http://example.com/yolo.jpg") {
    imageView.load(url)
}

見る https://github.com/contentful-labs/concorde

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top