Преобразование изображения Java - PullRequest
7 голосов
/ 08 июля 2010

Мне нужно создать эффект глубины 3d для моего изображения. Номер 1 - это то, что у меня есть, а номер 2 - это форма, где я хочу преобразовать номер 1. Так есть ли способ для этого в стандартных графических библиотеках Java или некоторых других библиотеках с открытым исходным кодом?

альтернативный текст http://i26.tinypic.com/27y8ntj.png

Ответы [ 2 ]

5 голосов
/ 08 июля 2010

Это нельзя сделать с помощью класса AffineTransform.См. Статью в Википедии об аффинном преобразовании:

В общем, аффинное преобразование состоит из линейных преобразований (вращение, масштабирование или сдвиг) и перевода (или «сдвига»).

Что вам нужно, это какая-то форма преобразования перспективы.С http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/PerspectiveTransform.html

Перспективное преобразование способно отображать произвольный четырехугольник в другой произвольный четырехугольник, сохраняя при этом прямолинейность линий. В отличие от аффинного преобразования, параллелизм линий в источнике не обязательно сохраняется в выходных данных.

С http://answers.google.com/answers/threadview/id/515829.html

Java Advanced Imaging API позволяет легко выполнять перспективное преобразование.

Как и в Java2D и Java3D, эти подпрограммы оптимизированы, они не выполняются обычным образом, интерпретируемым Java, поэтому они также очень быстры.

JAI можно загрузить с

http://java.sun.com/products/java-media/jai/downloads/download-1_1_2.html

Информацию о том, как запустить преобразование перспективы, можно найти в:

http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/

0 голосов
/ 08 июля 2010

Если вы хотите много рисовать в 3D, я бы посоветовал взглянуть на решение для 3D-рендеринга, такое как OpenGL / JOGL.

Если это просто быстрая разовая трансформация, тогда выможно довольно легко смоделировать это с помощью

  • Цикл по всем линиям в 2.
  • Масштабирование соответствующей линии в 1. и рисование над линией в 2, растягивая ее вправопропорция (вам понадобятся некоторые базовые математические вычисления, чтобы решить это)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...