3

UIImage(UIImageView)を使用してJpeg2000とJpegの表示速度を比較していたところ、Jpeg2000の表示がJpegに比べてかなり遅いことに気づきました。

これは予想されることであり、それをスピードアップする方法はありますか?

ありがとう、-r

4

4 に答える 4

3

いいえ、それについてできることは何もありません(もちろん、JPEG 2000を使用しないことを除いて)。JPEG 2000は、プレーンなJPEGファイルよりもエンコードとデコードにはるかに多くのCPUパワーを必要とします。したがって、サードパーティのデコーダーを含めても、おそらく大きな改善はもたらされません。

于 2012-07-05T20:42:25.200 に答える
1

JPEG2000データからUIImageを作成できます。デコードプロセスはJPEGのデコードよりも遅くなりますが、デコードされたら、UIImageViewでの表示は他の形式と同じくらい高速である必要があります。JPEG 2000画像がたくさんある場合は、デコードされた画像をNSCacheにキャッシュすることをお勧めします。

于 2013-11-03T17:03:28.730 に答える
0

ここで言及されたすべては幾分真実です。ただし、標準のJPEGエンコーダー/デコーダーよりもエンコード/デコードプロセス全体で高速なJPEG2000の実装があります。彼らは過度のマルチスレッドとNEONアクセラレーションでそれを達成します。

詳細については、 http://kakadusoftware.com/およびhttps://groups.yahoo.com/neo/groups/kakadu_jpeg2000/conversations/messagesを確認して ください。ライブラリは商用です。ビジネスバージョンと個人/非商用バージョンがあります。iOS用にそれを実装するためにかなりの努力があります。ところで:AppleはQuicktimeとMac用のこのAPIだけでJPEG2000サポートを提供しています。ある程度iOSも。

于 2015-03-26T13:01:03.413 に答える
0

受信した画像データを.jpg形式に変換して、この種のデータを使用することができます。

import Foundation
import UIKit
import SDWebImageWebPCoder

extension Data {
    var jpegData: Data? {
    var image: UIImage?
    image = UIImage(data: self) ?? SDImageWebPCoder.shared.decodedImage(with: self, options: nil)
    return image?.jpegData(compressionQuality: 1.0)
   }
}

WepP画像の使用に興味がない場合は、SDImageWepPCoderを使用できません。使用例:

func loadImage(_ url: URL) {
    DispatchQueue.global(qos: .background).async { [weak self] in
        guard let data = try? Data(contentsOf: url) else {return}
        if let jpegData = data.jpegData {
            DispatchQueue.main.async {
                let displayingImage = UIImage(data: jpegData)
                yourImageView.image = displayingImage
            }
        }
    }
}

この決定により、バックグラウンドスレッドでjp2データをJPEGに変換し、通常どおりに使用できるようになります(レンダリングが高速で、UIがフリーズすることはありません)

于 2019-08-28T12:58:59.920 に答える