Возвращение GIF-изображения из метода
Вопрос
Я создаю приложение на Java, которое будет частью внешнего приложения. Мое приложение содержит область просмотра, которая показывает несколько полигонов и тому подобное. Внешнему приложению необходимо получить изображение области просмотра в формате GIF. Для этого он вызывает метод в интерфейсе (реализованный моим приложением), и мое приложение возвращает изображение. Внешнее приложение должно хранить изображение в базе данных (или что-то связанное с этим, о чем мне не нужно беспокоиться).
Мой вопрос: - Каким должен быть тип изображения контейнера, когда мое приложение отправляет его во внешнее приложение? Я имею в виду, какой должен быть тип возврата метода? В настоящее время мой класс кодировщика gif возвращает массив байтов. Есть ли другой вариант «лучше»?
Решение
Массив байтов может быть уместен, если вы ожидаете, что GIF-файлы будут маленькими, но вы можете рассмотреть возможность использования OutputStream
для более эффективной потоковой передачи битов.
Даже если сегодня вы просто вернете полностью заполненный ByteArrayOutputStream
, это позволит вам в будущем изменить реализацию, не затрагивая скрытый код.
Другие советы
Более интуитивным типом возврата может быть java.awt.Image.
Вот несколько примеров: http://www.google.com/codesearch? д = Java + GIF + изображение & амп; гл = еп & амп; btnG = Поиск + код
Если ваше «приложение» фактически вызывает метод Java, оно должно понимать типы возвращаемых данных Java, и вы должны вернуть java.awt.image.
Если вы делаете это через какую-то удаленную процедуру, которая не может понять типы Java, я бы возвратил байтовый массив и позволил принимающему приложению декодировать его.
Я бы создал два метода:
<Ол> java.awt.Image
. Здесь вы можете поместить чертежную часть вашего метода. java.awt.Image
в соответствии с запросом внешнего приложения. Он должен вернуть OutputStream
, как уже предлагалось.