比例して画像圧縮の実際の開発

com.lufax.g.media.utils.Loggerインポート、
インポートorg.springframework.beans.factory.annotation.Autowired;
インポートorg.springframework.stereotype.Service;

インポートjavax.imageio.ImageIO;
インポートjava.awt.image.BufferedImage ;
インポートjava.io. *;

/ **
*画像圧縮
* 19-10-11 ON shazhipeng880によって作成。
* /
@Service
パブリッククラスCompressImgService {

公共compressImgByWidthのinputStream(InputStream InputStreamは、整数幅){

OutputStreamのOS = NULL;
のinputStream = NULLであり、
文字列fileNameに= "1.JPG";

//一時パスにイメージを保存
savePic(InputStreamのファイル名);

//サムネイル画像の一時記憶アドレスの後
あなたははSystem.getProperty =文字列(「java.io.tmpdirの」)をしたいですか+ + fileNameにFile.separator;

試し{
BufferedImageのイメージImageIO.readは=(新しい新しいFileInputStreamを(あなたが欲しいん));

(あなたが欲しいん)OS =新しい新しいのFileOutputStream;

//画像幅
INT srcWidth image.getWidth =();
//画像の高
INT srcHeight = image.getHeight();
//後略記幅
INT compressWidth width.intValue =();
//略記比
INT率= srcWidth / compressWidth ;

//サムネイルの高さが算出した後
int型compressHeight = srcHeight /レート;

BufferedImageのBufferedImageの=新しいBufferedImageの(compressWidth、compressHeight、BufferedImage.TYPE_INT_RGB)。
bufferedImage.getGraphics()のdrawImage(image.getScaledInstance(compressWidth、compressHeight、image.SCALE_SMOOTH)、0、0、NULL)。

文字列のimageType = "JPG"。
ImageIO.write(BufferedImageの、のimageType、OS)。

//缩略后图片的流
=新しいFileInputStreamを(目的地)です。

}キャッチ(FileNotFoundExceptionを電子){

}キャッチ(のIOException e)の{

}最後に{
場合(ヌル= OSが!){
{みてください
(にos.closeを)。
}キャッチ(IOExceptionを電子){

}
}

//一時ファイルを削除します
。DELETEFILE(あなたが欲しいん)

リターンがあり、
}
}

パブリック無効savePic(InputStream InputStreamは、文字列filename){
OutputStreamのOS = NULL;
試み{
文字列のパス=はSystem.getProperty( "java.io.tmpdirの");
// 2、一時ファイルに保存された
// 1Kデータのバッファ
バイト[] =新しい新BSバイト[1024];
//読み込んだデータ長
のint lenは、
ローカルファイルへの//出力ストリームファイルを保存し

、新しいファイルの一時ファイル=ファイル(パス);
IF {(!tempFile.exists())
tempFile.mkdirs();
}
OS =新しいのFileOutputStream(tempFile.getPath()+ File.separator + fileNameに)。
)inputStream.available(=利用可能INT。
//开始读取
ながら(!(LEN = inputStream.read(BS))= -1){
os.write(BS、0、LEN)。
}

}キャッチ(のIOException e)の{

}キャッチ(例外e){

}最後に{
//完毕、关闭所有链接
(ヌル= InputStreamのは!){場合
{しようと
inputStream.closeを();
os.close();
}キャッチ(IOExceptionを電子){

}
}
}
}

ブールDELETEFILE公開(文字列filename){ 
ファイルファイル=新しい新ファイル(filename);
//ファイルパスに対応するファイルは、ファイルを存在している場合、削除する
場合(file.exists()&& file.isFile( )) {
(File.delete()){IF
のSystem.out.println( "1つのファイルを削除する" + fileNameに+ "成功!");
真に戻る;
}他{
System.out.printlnは( "1つのファイルを削除する" + fileNameに+ ! "失敗");
falseに戻る;
}
}他{
System.out.printlnは( "単一のファイルの削除に失敗しました:" "!が存在しません" + fileNameに+)は、
falseに戻ります。
}
}


}

おすすめ

転載: www.cnblogs.com/it-szp/p/11672421.html