Парсер 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.
Возможности — экспорт всех слоев, включая главный. Общая информация о файле, слоях. Полная поддержка слайсов.
Используйте данный код на свой страх и риск, также я буду благодарен, если сообщите об ошибках или способах улучшения кода.

psd_parser.7z

Комментарии (3) на “Парсер PSD-формата”

  1. KrOlSer Says:

    Продолжаю читать ваш блог. Не могу не удивиться. Еще раз молодцы. Обязательно попробую ваш парсер.

  2. Антон Волков Says:

    Если кому понадобится, нашёл AS3-парсер PSD:
    http://snippets.libspark.org/trac/browser/munegon/as3/src/com/voidelement/images/psd/

  3. Дмитрий Амелин Says:

    :)
    в PSDParser.as:
    * @link http://blog.alternativaplatform.com/en/2007/07/09/parser-psd-formata/

Оставить комментарий

(Регистрация)

Powered by WP Hashcash