Работа с изображениями с использованием Java - PullRequest
1 голос
/ 02 сентября 2010

Я пытаюсь создать программу, которая генерирует изображения для использования в качестве многоэкранных фонов, я делаю это нацелено на окна (в моем случае, 7, так что в основном я могу изменить изображения, не видя того же изображения на двух разных экранах)

в моей программе я читаю несколько входных файлов изображений и собираю их в одно выходное изображение, которое представляет собой общий размер рабочего стола (включая черные области, не видимые на экранах)

У меня вопрос: какие классы / методы хороши для обрезки / изменения размера / вставки нового изображения в Java, потому что я сталкиваюсь с таким количеством классов манипулирования изображениями, и все они, кажется, делают одну крошечную вещь.

Я не буду изменять какие-либо изображения после изменения размера или обрезки и помещать их в определенную позицию на новом (изначально пустом) изображении.

код можно сделать доступным, так как я планирую выпустить его позже, для тех, кому он может понравиться / нужен.

спасибо заранее, если на этот вопрос ответили, мои извинения, но я ДЕЙСТВИТЕЛЬНО огляделся.

1 Ответ

4 голосов
/ 02 сентября 2010

Я не знаю, является ли это лучшим методом, но это довольно просто:

// load an image
Image image = javax.imageio.ImageIO.read(new File("someimage.png");
// resize it
image = image.getScaledInstance(100, 100, Image.SCALE_SMOOTH);
// create a new image to render to
BufferedImage newimg = new BufferedImage(200,100,BufferedImage.TYPE_INT_ARGB);
// get graphics to draw..
Graphics2D graphics =newimg.createGraphics();
//draw the other image on it
graphics.drawImage(image,0,0,null);
graphics.drawImage(image,100,0,null);
graphics.fillOval(20,20,40,40); //making it a bit ugly ;)
//export the new image
ImageIO.write(newimg,"png",new File("output.png"));
//done!

Для простоты я отбросил все проверки, обработку исключений и т. Д.

...