У меня есть BufferedImage с альфа-прозрачностью, которую мне нужно сохранить как GIF с прозрачностью индекса. Отсутствуют пиксели полугруппы, поэтому преобразование должно быть возможным.Сохраните GIF с прозрачностью индекса, используя ImageIO из изображения с альфа-прозрачностью
Используя код, указанный под http://gman.eichberger.de/2007/07/transparent-gifs-in-java.html, я определяю цвет прозрачности (зеленый, например, который не является частью текущего изображения) и делает его прозрачным. Отлично работает, НО он смешивает таблицу цветов, и все цвета выглядят ужасно (хотя я использую только 3 разных цвета).
Есть ли способ отрегулировать это или еще один способ преобразования такого ARGB-изображения в индексированный без существенной потери качества?
Путь мой образ получает построены:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = (Graphics2D)image.getGraphics();
graphics.setColor(backgroundColor);
graphics.fillRect(0, 0, width, height);
// Some more painting here
graphics.dispose();
Спасибо за любую помощь!
Преобразование цвета из (A) RGB в индексированные не является тривиальной, если вы знаете, ваш только собираетесь использовать 3 цвета вы должен создать изображение как проиндексированное в первую очередь. Если вам нужно преобразование, вы должны посмотреть на библиотеку изображений (или реализовать алгоритм, например, распространение ошибок самостоятельно, но это не будет очень умным). – Viruzzo
Спасибо за ваш ответ! Ну, дело в том, что мне также нужно сохранить PNG (с альфа-прозрачностью) из одной и той же графики, и я не хочу делать ее дважды (слишком дорого). – Remo