Я работаю над инструментом для Android, который принимает png как вход, масштабирует его для нескольких плотностей и сохраняет их в каталоге. (Проект, который можно найти здесь: https://code.google.com/p/9patch-resizer/Работа с weird png-8 с ImageIO
Для того, чтобы открыть изображения, я использую функцию readImage ImageIO в (http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html#read(java.io.File))
Но я возникли некоторые проблемы с некоторыми PNG 8-файлов, которые я сжался до минимального размера благодаря ImageOptim
дело в том, если я открываю этот файл с ImageIO, он отбрасывает информацию о прозрачности, и это раздражает. (Значение, когда я масштабировать его, и сохранить его позже, прозрачность отбрасывается)
Вот изображение, о котором я говорю:и пересчитывается выход:
Если я использую метод createImage Инструментов (http://docs.oracle.com/javase/6/docs/api/java/awt/Toolkit.html#createImage(java.lang.String)) вместо метода ImageIO, чтобы получить изображение, он работает правильно, но я не получить информацию, такие как цвет модели и т.д. ...
Просто обезжиренное исходный код для 'com.sun.imageio.plugins.png.PNGImageReader', и от того, что я могу понять, он просто не полностью поддерживает блок tRNS для PNG RGB (т. е. нет прозрачности) ... Тем не менее, он доступен через «IIOMetadata», поэтому вы можете читать, масштабировать, затем, наконец, записывать изображение вместе с метаданными из оригинала. – haraldK
Hum, возможно, он не работает должным образом, поскольку я затем преобразовываю изображения, прежде чем писать их ... – Redwarp
Ну, я думаю, что это может не сработать, потому что процесс: открыть изображения. Если они RGB или индексированный цвет, преобразуйте их в ARGB. Затем выполните некоторые изменения размера/модификации. И выписать некоторые png (в текущем состоянии программы, я пишу png-24, а не png-8, даже если вход png-8). И блок tRNS используется в PNG-8, а не 24. Так что использование этого не получится. – Redwarp