2016-06-12 5 views
1

私は、ファイルに画像を保存するためにImageIO.save()のpng/jpg品質係数を下げても出力イメージファイルのサイズが小さくならないのはなぜですか?

ImageIO.getImageIO().save(image, os, ImageIO.FORMAT_PNG, qualityFactor) 

方法を使用してきました。どのような浮動小数点値でも0.0と1.0の間でqualityFactorとして使用すると、私が選択した形式(PNGまたはJPEG)であれば、常に同じ出力ファイルサイズがkB単位で取得されます。

NB:実際のデバイスではなく、シミュレータ(iPhone/Android)でのみ確認しました。

qualityFactorを考慮する適切な方法は何ですか?これは、基盤となるプラットフォームへのヒントですと

+0

Ehmmm ... qualityFactor(とその他の引数)は 'save()'メソッドの中になければなりません、いいえ? – leonbloy

+0

@leonbloyがよく見つかったので、私は質問を編集しました、ありがとう! – HelloWorld

答えて

1

乾杯はなく、すべてのプラットフォームでは、このようなヒントを受け入れます。 iOSはそうしていますが、Androidはありません。

iOSはJPEG用のみを受け入れるため、ロスレスフォーマットのPNGには影響しません。

+0

これを知ってよかったよ!ありがとう@彩! – HelloWorld

1

PNGには「品質」調整はありません。エンコーダのAPIに互換性のための設定があるようです。 PNGでは、時間と圧縮の両方のサイズが可能ですが、画質には影響しません。

JPEGでは、品質とサイズのトレードオフがあります。しかし、JPEGに固有の「品質」要因はありません。品質は、サブサンプリング、量子化テーブル選択、および(わずかな程度で)最適なハフマンテーブルの関数である。

エンコーダが「品質」パラメータを使用していることは、誰もが推測していることです。

+0

細部に感謝します! – HelloWorld

関連する問題