0

実行時にJFIF標準化されたバージョンに置き換える必要があるJPGファイルがいくつかあります(適切なヘッダーを持たないJPGを提供するベンダーを使用しているため、特定のアプリケーションでは機能しません)...私は既存の画像から新しいファイルを作成し、そのファイルからバッファリングされた画像を取得し、内容を削除せずにファイルに書き戻すことができ、機能します...

imageSrcFolder.eachFileMatch ( ~/.*\.jpg/, {
    BufferedImage bi = ImageIO.read( it )
    ImageIO.write( bi, "jpg", it )
});

私が持っている質問は、なぜですか?ファイルのサイズが 2 倍にならないのはなぜですか? 最初に削除する必要がないのはなぜですか? ファイル オブジェクトを既存のファイルに取り込んで、それを新しいファイルのように扱うことができるのはなぜですか? 私が「ファイル」と見なすものは、Java の File オブジェクトが実際に何であるかとは異なるようです。さもなければ、これはまったく機能しません。

私のコードはやりたいことを正確に実行しますが、常にそうなるとは確信していません...簡単すぎるようです

4

2 に答える 2

3

JavaDoc for には、次のImageIO.writeフレーズが含まれています。

指定された形式をサポートする任意の ImageWriter を使用してイメージを に書き込みますFile。既にFileプレゼントがある場合、その内容は破棄されます。

読み取り操作と書き込み操作の両方で使用したため、これは でitあると想定しています。File

于 2010-03-18T19:07:26.007 に答える