Парсер PSD-формата
09.07.2007 Квиринг АлексейPhotoshop в настоящее время стандарт де-факто для дизайнеров. Но для игры, кроме, собственно, изображения, нужна дополнительная информация. Например, точки привязки, разбивка на спрайты и так далее. Было принято решение, для удобства дизайнеров, задавать дополнительную информацию используя возможности Photoshop-а. То есть точки привязки — в отдельном слое, деление на спрайты — слайсами и так далее. Для обработки сервером этой информации нам потребовался парсер PSD-формата. Стали искать готовые парсеры, нашли, но довольно убогие, например, нет поддержки множественных слоев, слайсов и так далее. Пришлось найти документацию по формату и потратить неделю на написания парсера.
Пример использование парсера:
PSDParser parser = new PSDParser(new FileInputStream("image.psd")); PSDLayerAndMask layerAndMask = parser.getLayerAndMask(); List layers = layerAndMask.getLayers(); List images = layerAndMask.getImageLayers(); int i = 0; for (PSDLayerStructure layer : layers) { PSDLayerPixelData pixelData = images.get(i); BufferedImage image = pixelData.getImage(); if (image != null) ImageIO.write(image, "png", new File(layer.getName() + ".png")); i++; }
Исходники проекта
Исходники проекта выложены в свободный доступ, под лицензией APACHE LICENSE.
Возможности — экспорт всех слоев, включая главный. Общая информация о файле, слоях. Полная поддержка слайсов.
Используйте данный код на свой страх и риск, также я буду благодарен, если сообщите об ошибках или способах улучшения кода.

26.08.2007 в 19:53
Продолжаю читать ваш блог. Не могу не удивиться. Еще раз молодцы. Обязательно попробую ваш парсер.
22.10.2007 в 12:13
Если кому понадобится, нашёл AS3-парсер PSD:
http://snippets.libspark.org/trac/browser/munegon/as3/src/com/voidelement/images/psd/
22.10.2007 в 12:50
:)
в PSDParser.as:
* @link http://blog.alternativaplatform.com/en/2007/07/09/parser-psd-formata/