サイズ256 * 256のグレースケール画像があります。これを128 * 128にダウンスケールしようとしています。 私は平均2ピクセルをとり、出力ファイルに書き込みます。コードの実行上記スケールグレースケール画像を縮小できません
class Start {
public static void main (String [] args) throws IOException {
File input= new File("E:\\input.raw");
File output= new File("E:\\output.raw");
new Start().resizeImage(input,output,2);
}
public void resizeImage(File input, File output, int downScaleFactor) throws IOException {
byte[] fileContent= Files.readAllBytes(input.toPath());
FileOutputStream stream= new FileOutputStream(output);
int i=0;
int j=1;
int result=0;
for(;i<fileContent.length;i++)
{
if(j>1){
// skip the records.
j--;
continue;
}
else {
result = fileContent[i];
for (; j < downScaleFactor; j++) {
result = ((result + fileContent[i + j])/2);
}
j++;
stream.write(fileContent[i]);
}
}
stream.close();
}
}
に成功し、それがいることを言って私にエラーを与えている私は、出力ファイルサイズの大きさが小さくなる見ることができますが、私はオンライン(https://www.iloveimg.com/convert-to-jpg/raw-to-jpg)をJPGする 出力ファイル(RAWファイル)を変換しようとすると、ファイルが破損しています。 入力ファイルを同じオンラインツールから変換しています。完全に動作しています。壊れたファイルを作成している私のコードで何かが間違っています。 どうすれば修正できますか?
P.Sイメージを直接縮小するライブラリは使用できません。
を縮小後の画像と品質を維持するための議論については、後のサイズ変更(非常に低いJava)を参照してください。受け入れの回答ではサードパーティライブラリが使用されるため、[この回答](https://stackoverflow.com/questions/11959758/java-maintaining-aspect-ratio-of-jpanel-background-画像/ 11959928#11959928)、Java自体にあるライブラリ機能を使用して画像を拡大/縮小するための分割と征服の方法を説明しています – MadProgrammer
リンクしているオンラインツールは、["Camera RAW"](https://en.wikipedia.org/) wiki/Raw_image_format)ファイルをJPEGに変換します。これらの種類のファイルは、「生の」ピクセルデータではなく、ファイル形式(通常はTIFF/Exifベース)に準拠し、さまざまな圧縮/解像度、サムネイルなどの複数のイメージを含みます。 JPEGロスレス圧縮)。コードでは、ファイルに生のピクセルデータが含まれているとみなされ、プロセスのカメラRAWファイルが破損します。それらを読む方法についてのいくつかの入力については、[この回答](https://stackoverflow.com/q/1222324/1428606)を参照してください... – haraldK