Я должен изменить размер PNG, JPEG и файлов GIF. Как я могу сделать этот Java использования?
После загрузки изображения можно попробовать:
BufferedImage createResizedCopy(Image originalImage,
int scaledWidth, int scaledHeight,
boolean preserveAlpha)
{
System.out.println("resizing...");
int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
Graphics2D g = scaledBI.createGraphics();
if (preserveAlpha) {
g.setComposite(AlphaComposite.Src);
}
g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
g.dispose();
return scaledBI;
}
Если Вы имеете дело с большими изображениями или хотите симпатичный результат, это не тривиальная задача в Java. Просто выполнение его через перемасштаб op через Graphics2D не создаст высококачественную миниатюру. Можно сделать это с помощью JAI, но требуется больше работы, чем Вы вообразили бы для получения чего-то, что выглядит хорошим, и JAI имеет противную привычку к выдуванию нашей JVM с ошибками OutOfMemory.
я предлагаю использовать ImageMagick в качестве внешнего исполняемого файла, если можно выйти сухим из воды. Его простое для использования и это делает задание правильно так, чтобы Вы не имели к.
Вам не нужна библиотека, чтобы сделать это. Можно сделать это с самим Java.
у Chris Campbell есть превосходная и подробная рецензия при масштабировании изображений - видят , эта статья .
Chet Haase и Romain Guy также имеет подробную и очень информативную рецензию изображения, масштабирующегося в их книге, Грязные Толстые клиенты .
Java Усовершенствованная Обработка изображений является теперь открытым исходным кодом и обеспечивает операции, в которых Вы нуждаетесь.
Если , установка imagemagick на вашем компьютере является вариантом, я рекомендую im4java . Это очень тонкий слой абстракции в интерфейсе командной строки, но он очень хорошо выполняет свою работу.