2

以下のコードは、指定された URL から画像をダウンロードします。同じ画像をブラウザーからローカルに保存すると、プログラムでダウンロードした画像よりも約 66% も大きくなります。

コードではサイズに関するパラメーターが明示的に指定されていませんが、ダウンロードされたファイルがブラウザーからダウンロードされたファイルよりも小さいのはなぜですか?

BufferedImage buffImage = ImageIO.read(new URL("random url to an image"));
ImageIO.write(buffImage, "jpg", new File("MyAppDl.jpg"));

編集: 奇妙な ... 一貫性がありません。別の URL ではサムネイルが明らかに小さい

4

2 に答える 2

3

単なる推測: ブラウザはファイルを「そのまま」ロードします...コードはファイルをデータ構造に読み取り、それをファイルに再度書き込みます。ほとんどの場合、元の使用率よりも高いデフォルトの圧縮が適用されます。

元のファイルが必要な場合は、使用せずBufferedImageImageIO、プレーン ストリームで読み書きします。

于 2011-04-15T17:22:54.600 に答える
2

バージョンはImageIO圧縮解除され、別の品質設定で再圧縮されています。Streamこれを行わないでください。データを操作せず、解釈せずに渡すだけの通常のクラスを使用してください。

于 2011-04-15T17:29:22.637 に答える