Pergunta

Eu preciso criar um arquivo PSD em camadas com ImageMagick ou qualquer outra ferramenta de linha de comando disponíveis na plataforma Linux. Desde que eu preciso fazer isso no servidor Linux, eu não posso usar Photoshop scripting.

O comando ImageMagick abaixo cria arquivo PSD com uma única camada, em que duas imagens (aqui: fractais plasma) estão posicionados um a seguir ao outro. (Eu uso o ImageMagick 6.5.3-10 2009-07-31 Q16, o mais recente disponível em MacPorts.)

convert -size 100x100 plasma:fractal plasma:fractal -append out.psd

Como faço para criar um arquivo PSD, onde cada imagem está em sua própria camada, e uma camada é diretamente acima outro?

Ou há qualquer outra ferramenta de linha de comando que permita-me a fazer isso?

Update:? Todas as outras opções do que linha de comando GIMP

Foi útil?

Solução

Se ImageMagick não trabalho, eu olhar para Gimp .

Os seguintes comandos criado um arquivo PSD de 2 camadas para mim no console interativo:

> (gimp-image-new 200 200 0)
(1)
> (gimp-layer-new 1 200 200 0 "layer-1" 100 0)
(2)
> (gimp-layer-new 1 200 200 0 "layer-2" 100 0)
(3)
> (file-psd-save 0 1 0 "test.psd" "test.psd" 0 0)
> (gimp-image-add-layer 1 2 -1)
> (gimp-image-add-layer 1 3 -1)
> (file-psd-save 0 1 1 "test.psd" "test.psd" 0 0)

Isso precisa ser convertido em um script de script-fu (arquivo .scm) e pode ser executado a partir da linha de comando com algo parecido com isto:

gimp -i -b '(your-script-name "test.psd" 200 200)' -b '(gimp-quit 0)'

Outras dicas

Eu uso as linhas de comando abaixo. Eu não encontrei nenhum problema em abrir o PSD gerado no Photoshop, no entanto todas as camadas aparece como uma camada de fundo, e você tem que convertê-lo em uma camada verdadeira no primeiro fim de editar a ordenação camada.

Aqui está a linha de comando para a janela. Dada a lista de imagens (im1.xxx, im2.xxx etc, IM1 sendo a camada inferior,) uma lista de rótulos para as camadas ( "label1", "label2" ...):

convert ^ ( ^ -page +0+0 ^ -label "label1" ^ im1.xxx[0] ^ -background none ^ -mosaic ^ -set colorspace RGB ^ ) ^ ( ^ -page +0+0 ^ -label "label2" ^ "im2.xxx"[0] ^ -background none ^ -mosaic ^ -set colorspace RGB ^ ) ^ ( ^ -clone 0--1 ^ -background none ^ -mosaic ^ ) ^ -alpha Off ^ -reverse ^ "out.psd"

Isto é, para cada camada, você tem algo parecido

( ^ -page +0+0 ^ -label "optional_label" ^ im1.xxx[0] ^ -background none ^ -mosaic ^ -set colorspace RGB ^ )

O rótulo / nome da camada é opcional (remove -label se nenhum). A [0] em im1.xxx[0] recupera a primeira imagem do arquivo de imagem, caso não exista uma miniatura na Exif.

No Unix / OSX, você tem que proteger o parêntese por uma barra invertida, e os personagens de continuação de linha mudar também para \:

\( \ -page +0+0 \ -label "optional_label" \ im1.xxx[0] \ -background none \ -mosaic \ -set colorspace RGB \ \)

Se os nomes de imagem contêm caracteres especiais, você pode protegê-los com " (por exemplo "c:\my im1.png") sem qualquer problema.

Você pode usar o -adjoin combinar uma sequência de imagens.

convert -size 100x100             \
        -alpha set plasma:fractal \
        -alpha set plasma:fractal \
        -adjoin                   \
        out.psd
  • Os canais alfa são necessários para o codificador PSD.
  • A ordem das imagens é camada inferior a camada superior.
  • Há uma série de problemas de compatibilidade com Photoshop e GIMP, dependendo das configurações.

Usando:

  • ImageMagick 6.5.4-6
  • Photoshop CS2

Aqui está alguns links úteis para você:

O segundo link é usar com PHP , mas ele executa ImageMagick, utilize apenas os comandos, não a todos os PHP sintaxe, apenas a linha de exec código.

Hope Eu estou ajudando você!

Eu concordo com Jon Galloway, o console Gimp é uma escolha melhor. Aqui está o meu script:

(define (pngtopsd width height png-paths psd-path)
(define (add-layers image png-paths) 
    (if (null? png-paths) 0 
        (let* 
            ((png (car png-paths))
            (new-layer (car (gimp-file-load-layer 0 image (car png)))))

            (gimp-image-insert-layer image new-layer 0 -1)
            (gimp-item-transform-2d new-layer 0 0 1 1 (cadr png) (caddr png) (cadddr png))
            (add-layers image (cdr png-paths))
        )
    ))

(let* 
    ((png (car png-paths))
    (image (car (gimp-file-load 1 (car png) (car png))))
    (drawable (car (gimp-image-get-active-layer image))))

    (gimp-image-resize image width height 0 0)
    (gimp-item-transform-2d drawable 0 0 1 1 (cadr png) (caddr png) (cadddr png))       
    (add-layers image (cdr png-paths))
    (file-psd-save 0 image drawable psd-path psd-path 1 0)
    (gimp-image-delete image)
))

Você só precisa colocar esse script em arquivo com o nome "pngtopsd.scm" dentro do diretório gimp "script" ( "c: \ Program Files \ GIMP 2 \ share \ gimp \ 2.0 \ Scripts \ " para Windows) e você pode criar PSD em camadas a partir da lista de imagens PNG com a transformação (translação ou rotação) de cada camada. amostra de uso:

gimp-console-2.8.exe -i -b              ^
  "(pngtopsd (list                      ^
   (list \"c:/../1.png\" 0 500 500)     ^
   (list \"c:/.../2.png\" 0.7 200 1000) ^
   (list \"c:/.../3.jpg\" -0.5 1000 0)) ^
   \"c:/.../result.psd\")"

Há meios (list \"c:/.../2.png\" 0.7 200 1000):

  • 0,7 é o ângulo de rotação de imagem (em radianos)
  • 200 1000 é x e y turno em uma imagem

Você pode criar um PSD em camadas com ImageMagick, mas note a primeira imagem é realmente usado como imagem de pré-visualização (ou seja, composto de todas as camadas).

convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd

Irá criar a 2 PSD em camadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top