Реальное развитие сжатия изображения пропорционально

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. *;

/ **
* сжатия изображения
* сотворенного shazhipeng880 ON 19-10-11.
* /
@Service
общественного класса CompressImgService {

общественного compressImgByWidth InputStream (InputStream InputStream, Integer ширина) {

OutputStream OS = NULL;
InputStream = нуль IS;
строка имя_файл = "1.jpg";

// сохранить изображение временного пути
savePic (InputStream, Filename);

// после выполнения снимка миниатюр адрес временного хранения
Где вы хотите System.getProperty = String ( "The java.io.tmpdir") + + имя_файла File.separator;

Попробовать {
BufferedImage Image 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, ОС);

//缩略后图片的流
есть = новый FileInputStream (назначения);

} Задвижка (FileNotFoundException е) {

} поймать (IOException е) {

} , наконец {
если (нуль = Os!) {
Попробуйте {
os.close ();
} Поймать (IOException е) {

}
}

// Удаление временных файлов
DeleteFile (Где вы хотите),

возвращение;
}
}

общественного недействительными savePic (InputStream InputStream, String Filename) {
OutputStream ос = NULL;
Попробовать {
Строка путь = System.getProperty ( "java.io.tmpdir");
// 2, сохраняются во временном файле
// данных 1K буфера
байт [] = новый новый BS байт [1024];
// считываем длина данных
INT Len,
сохранения файла // поток вывода в локальный файл

файл TempFile = новый Файл (путь),
если {(! tempFile.exists ())
tempFile.mkdirs ();
}
OS = новый FileOutputStream (tempFile.getPath () + File.separator + Filename);
INT = inputStream.available доступен ();
//开始读取 в
то время как ((Len = inputStream.read (шир)) = -1!) {
Os.write (шс, 0, длина);
}

} Поймать (IOException е) {

} поймать (Exception е) {

} наконец {
//完毕,关闭所有链接
если (нуль = InputStream!) {
Попробуйте {
inputStream.close ();
os.close ();
} Поймать (IOException е) {

}
}
}
}

Логическое в DeleteFile общественности (String FileName) { 
File File = новый новый файл (имя_файла);
// если файл , соответствующий путь к файлу существует и файл, удалить ,
если (File.Exists () && file.isFile ( )) {
IF (File.delete ()) {
System.out.println ( "удалить один файл" + FileName + "успех!");
вернуться к истине;
} еще {
System.out.println ( "удалить один файл" + имя_файла + ! «неудача»),
вернуться к ложным;
}
} еще {
System.out.println ( «не удалось удалить один файл:» + имя_файла +); «не существует!»
вернуться ложным;
}
}


}

рекомендация

отwww.cnblogs.com/it-szp/p/11672421.html