1

任意のファイル データ サイズについて、そのデータ制限内に収まるように UIImage のサイズを変更 (または圧縮) できるようにしたいと考えています。この質問は、サイズを変更する方法やファイルサイズを確認する方法に関するものではありません...これをパフォーマンスの高い方法で取得するためのアルゴリズムに関するものです。

すでにここで検索して、線形アルゴリズムまたはバイナリ アルゴリズムで画像 jpeg の品質を下げることについて話しているこのスレッドを見つけました。これはあまりパフォーマンスが高くなく、せいぜい数十秒かかります。

私は iOS で作業しているので、画像は (iPhone 4S から) 10MB 近くになる可能性があります。私の目標は可変ですが、現在 3145728 バイトです。

私は現在UIImageJPEGRepresentation、少し圧縮するために使用していますが、低い目標を達成するには、このような大きな写真の品質を大幅に低下させる必要があるようです. UIImageサイズとサイズの関係はありNSDataますか?次のようなことを言うことができる関数はありますか:

area * X = dataSize

...ワンショットでサイズを変更できるように、倍率を求めますか?

4

1 に答える 1

1

リンク先のスレッドを見て、10MB の画像を圧縮すると比較的遅くなるという 1 つのアイデアがありました。(圧縮がはるかに高速になるように)サイズをはるかに小さくしてから、(リンクから)圧縮アルゴリズムを実行するのはどうですか。これは、10MB の画像を圧縮するサイズのガイドとして使用できますか? サイズに関係なく、同じ画像の圧縮率は同様でなければならないという考えです。

圧縮された 1000x1000 ピクセルが 10MB で、ターゲット サイズが 3MB だとします。

次に、同じ品質で圧縮された小さい 100x100 ピクセル (たとえば) がC MB であるとします。次に、サイズ = C * (3/10) になるまで、100x100 画像に対してバイナリ検索 alg を実行します。次に、この圧縮品質を 1000x1000 の画像に使用して、約 3MB の画像を取得します。

注: これがうまく機能するかどうかはわかりません。これは単なる提案です。小さいサイズの画像に選択するサイズ (私は 100x100 を使用しました) も単なる推測であり、何かを実験する必要があります。

于 2012-06-25T02:10:02.640 に答える