Есть ли хорошая альтернатива javax.imageio? - PullRequest
2 голосов
/ 21 апреля 2009

Я ищу хорошую альтернативу пакету javax.imageio, который позволяет мне выполнять простые операции поворота, резки и масштабирования изображений. Например, я хотел бы сделать

int angle, height, width;
image.rotateRight(angle).scale(height, width);

для получения изображения, которое повернуто на угол градусов вправо и уменьшено до высота x ширина пикселей.

Используя Graphics2D и BufferedImages, я должен буду сделать это, что нельзя ни прочитать, ни написать:

BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = result.createGraphics();
graphics.translate(height/2, width/2);
graphics.rotate(angle);
graphics.translate(-width/2, -height/2);
graphics.drawImage(image, 0, 0, width, height, null);

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

Ответы [ 2 ]

5 голосов
/ 21 апреля 2009

Есть Java Advanced Imaging API , который содержит полезные вещи, такие как RotatorDescriptor .

Но, признаюсь, я нахожу ваш пример довольно читабельным, поэтому я не уверен, что вам понравится больше: -)

3 голосов
/ 21 апреля 2009

Я согласен с Брайаном: JAI - очень хороший вариант для вас. Возможно, вам понадобится написать некоторый объект-делегатор, чтобы получить такой читаемый код, который вам нужен, и использовать его вместо JAI API.

Также вы можете использовать Processing (http://processing.org). Это API проще, чем JAI API. И в результате использования Processing вы получите лучшее качество для операций масштабирования и вращения по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...