ダウンロード中にuiimageViewにプログレッシブJPEGを表示するにはどうすればよいですか?
-
12-10-2019 - |
質問
ネットから画像をダウンロードして、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)
}
所属していません StackOverflow