Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GifEncoder: too many colors for a GIF 
:(
    Опции темы
m0zg
Дата 3.9.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: нет
Всего: 2



Есть такой код:

Код

...
ByteArrayOutputStream ostream = null;
...
/*тут всякие операции с png-файлов, который в итоге оказывается в ostream */
...
byte[] imgData = ostream.toByteArray();
Image img = Toolkit.getDefaultToolkit().createImage(imgData);
GifEncoder encoder;
try {
        encoder = new GifEncoder(img, stream);
        encoder.encode(); //Класс GifEncoder взят из проекта ACME(www.acme.com), перекодирует в gif 
    stream.close(); //закрыл выходной поток сервлета
} catch (IOException e) {
    e.getMessage();
    e.printStackTrace();
}
...


Перекодируется всё правильно, но вот проблема с кол-вом цветов. Вылетает эксепшн "too many colors for a GIF". Как здесь это исправить?
GifEncoder имеет следующие конструкторы:
Код

GifEncoder(Image img, OutputStream out)

GifEncoder(Image img, OutputStream out, boolean interlace)

GifEncoder(ImageProducer prod, OutputStream out)

GifEncoder(ImageProducer prod, OutputStream out, boolean interlace)

PM MAIL   Вверх
m0zg
Дата 5.9.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: нет
Всего: 2



Поставлю вопрос по-другому smile. Как для объекта Image выставить кол-во цветов?
PM MAIL   Вверх
Connie
Дата 5.9.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



m0zg, дело в том, что gif использует не просто 256 цветов, а палитру цветов, т.е. грубо говоря это может быть очень плавный переход от светлоголубого к темносинему. И будет 256 голубых и синих цветов, а белого ни одного. А может быть только 2 цвета.

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

ИМХО, надо искать такой способ где то в графических редакторах

А нет разве возможности использовать png?
PM MAIL WWW   Вверх
m0zg
Дата 6.9.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: нет
Всего: 2



Для PNG я уже сделал. У меня задача следующая: на вход поступает SVG, на выходе нужно конвертировать в JPG, PNG и GIF. Всё сделал, кроме GIF'a. Для ковертации в GIF и PNG использую batik. Но в GIF он ковертировать не умеет, вот и пытаюсь найти другие способы, найти какие-нибудь GifEncoder'ы. Сейчас у меня уже дело дошло до того, что я с помощью batik'a сначала получаю png, а потом пытаюсь конвертировать его в gif. Но пока безуспешно. Т.е. работает, но только если я на вход подаю буквально пару линий, иначе эксепшн.
PM MAIL   Вверх
w1nd
Дата 6.9.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



Можно создать нужное изображение с помощью BufferedImage, в качестве типа указав TYPE_BYTE_INDEXED.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Connie
Дата 7.9.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



m0zg, 

Вот тут не совсем то, но может выйдет?
http://blog.codebeach.com/2007/06/convert-...ng-in-java.html

Вот это использует внешнюю программу
http://www.coderholic.com/png2gif/
но я не знаю применимо ли это в java :(

вот еще немного накопал
http://forums.sun.com/thread.jspa?forumID=...hreadID=5162199

А вот кажется по сути вопроса smile как раз про too many colors
http://forums.sun.com/thread.jspa?forumID=...threadID=507271

Это сообщение отредактировал(а) Connie - 7.9.2008, 20:58
PM MAIL WWW   Вверх
m0zg
Дата 7.9.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: нет
Всего: 2



Connie, спасибо огромное! Кажется, на sun'овском форуме то, что надо. Проверю и сообщю результат smile
PM MAIL   Вверх
m0zg
Дата 8.9.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: нет
Всего: 2



Всё хорошо, только вместо прозрачных пикселей отображаются чёрные 
PM MAIL   Вверх
Connie
Дата 8.9.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



m0zg, посмотри второй пост DrLaszloJamf, там была подобная проблема, по последней ссылке. Написано, что решено, но не написано как.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0874 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.