2009-03-10 7 views
16

Если у меня есть файл XCF (или любой другой, поддерживаемый Gimp), как я могу его преобразовать, например, PNG для отображения или дальнейшей обработки?Преобразование XCF и других файлов с помощью командной строки с GIMP?

+1

Если вы хотите знать, как это сделать с помощью GIMP, а не ImageMagick (который искал мои тестовые изображения), взгляните на [этот вопрос] (http://stackoverflow.com/questions/5794640/how-to-convert -xcf к PNG-используя-каркасная-из-командной строки). –

+0

@Laurence Gonsalves, спасибо! Это то, что я изначально искал! –

ответ

26

Я пару лет поздно, но я думал, что я хотел бы добавить, что я думаю, что, безусловно, является лучшим решением: есть набор инструментов называется Xcftools (на Ubuntu, apt-get install xcftools), который имеет утилиту под названием xcf2png что делает эту работу отлично.

xcf2png image.xcf -o image.png 

Это намного лучше, чем) с помощью ImageMagick (который, как я сказал в комментариях выше ужасно разбитые), или б) с помощью Gimp (который имеет чрезвычайно сложный язык сценариев для просто экспортировать изображения).

5

Я думаю ImageMagick должен делать то, что вы хотите (и даже больше)

convert image.xcf image.png 
+0

По моему опыту, текущие версии ImageMagick имеют очень сложную поддержку XCF. Различные размеры слоев заставляют результирующее изображение быть полностью черным. Я также испытываю ошибки альфа-канала (сплошные пиксели появляются из ниоткуда). –

+0

Да, поддержка XCF от ImageMagick серьезно нарушена. Использование самого gimp было бы лучшим вариантом. –

+2

Это не сработало для меня вообще. Кажется, что вы хотите экспортировать слои в виде отдельных изображений (для каждого слоя он создал имя-0.png, имя-1.png), но он только извлек первые два уровня и изменил альфа-значение на двоичный. Поэтому я предпочел бы использовать GIMP. Просто не могу для жизни меня выяснить, что Lisp код для написания ... – mgiuca

2

Очень немногие, если таковые имеются, кроме GIMP программы чтения XCF файлов. Это по дизайну от разработчиков GIMP, формат на самом деле не документирован или не поддерживается как формат общего назначения.

При этом рассматривается использование самого GIMP с использованием аргументов командной строки (особенно опция --batch).

EDIT: It looks как будто ImageMagick поддерживает XCF, так что это, вероятно, более легкий маршрут, если поддержка кажется настолько хорошей. Я не тестировал его, и в документации мало сказано. Я бы немного насторожился.

+0

Похоже, что обратные преобразования imagemagick. Я бы предпочел использовать GIMP, поскольку он, безусловно, поддерживает свой собственный формат, а также поддерживает другие форматы. Я попытался изучить GIMP из оболочки, но это немного неинтуитивно.Можете ли вы, например, отказаться от примера или двух при конвертации с помощью GIMP или в ссылку с документами? –

0

Если вы хотите навалом конвертировать .xcf изображений .png, вы могли бы найти это обертка скрипт более полезным:

#! /bin/bash -peux 
exec xcf2png $1 -o ${1%.xcf}.png 

Сохранить это где-то на вашем пути, как xcftopng (обратите внимание на to вместо 2) и назвать это так:

ls *.xcf|xargs -l xcftopng 
3

очень хорошее решение (!) и пояснения можно найти here. Короче говоря, есть схема подачи сценария bash/lisp к gimp

#!/bin/bash 
{ 
cat <<EOF 
(define (convert-xcf-to-jpeg filename outfile) 
    (let* (
    (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) 
    (drawable (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))) 
    ) 
    (file-jpeg-save RUN-NONINTERACTIVE image drawable outfile outfile .9 0 0 0 " " 0 1 0 1) 
    (gimp-image-delete image) ; ... or the memory will explode 
    ) 
) 

(gimp-message-set-handler 1) ; Messages to standard output 
EOF 

for i in *.xcf; do 
    echo "(gimp-message \"$i\")" 
    echo "(convert-xcf-to-jpeg \"$i\" \"${i%%.xcf}.jpg\")" 
done 

echo "(gimp-quit 0)" 
} | gimp -i -b - 

Но посмотрите на страницу для полной истории. Это стоит того.