Pergunta

Eu tenho um PSD multi-camadas, com uma camada específica sendo texto não-rasterized. Eu estou tentando descobrir uma maneira que posso, a partir de um bash / perl / python / whatever-else programa:

  1. carregar o PSD
  2. editar o texto na referida camada
  3. achatar todas as camadas na imagem
  4. salvar como um formato web-friendly como PNG ou JPG

pensei imediatamente em ImageMagick , mas eu não acho que eu posso editar a camada de texto através de IM. Se eu pode realizar as duas primeiras etapas alguma outra forma programática, eu posso sempre usar ImageMagick para executar as duas últimas etapas.

Depois de um par de horas de pesquisando e procurando CPAN e PyPI, eu ainda não encontrei nada promissor. Alguém tem conselhos ou idéias sobre o assunto?

Foi útil?

Solução

Se você não gosta de usar o suporte oficial AppleScript, JavaScript ou VBScript, em seguida, há também a possibilidade de fazê-lo em Python. Isto é explicado no artigo Photoshop scripting com Python , que se baseia na interface cOM do Photoshop.

Eu não tentei isso, então no caso de ele não funciona para você: Se o texto é preservada após conversão para SVG então você pode simplesmente substituí-lo por qualquer ferramenta que você gosta. Em seguida, convertê-lo para PNG (ex. Por inkscape --export-png=...).

Outras dicas

Você considerou abrir e editar a imagem no GIMP? Ele tem muito bom suporte PSD, e pode ser programado em vários idiomas.

Qual deles você usar depende em parte da sua plataforma, a interface Perl não funciona no Windows o último que eu conhecia. Acredito Esquema é suportado em todos os portos.

A única maneira que eu posso pensar para automatizar a mudança do texto do interior de um PSD seria usar uma substituição com base regex.

  1. Criar uma imagem muito simples no Photoshop, talvez um fundo branco e uma camada de texto, com o texto sendo um comprimento conhecido.
  2. Pesquisar o arquivo para seu texto, e com um editor hexadecimal, procure nas proximidades, para o comprimento do texto (que pode ou não ser parte do formato de arquivo).
  3. Tente alterar o texto, primeiro a uma corda do mesmo comprimento, em seguida, para algo mais curto / mais tempo.
  4. Abrir no Photoshop após cada alteração para ver se o arquivo está corrompido.

Este método, se viável, só funcionará se a camada em questão contém uma cadeia conhecida, que pode ser substituído por seu outro valor. Note que eu não tenho idéia se isso vai funcionar, como eu não tenho Photoshop neste computador para tentar este método para fora. Talvez você pode fazê-lo funcionar?

Como para converter para png, eu estou em uma perda. Se o script de substituição é em Python, você pode ser capaz de fazê-lo com o Python Imaging Library (PIL, que parece apoiá-lo ), mas caso contrário, você pode apenas ter que abrir o Photoshop para fazer a conversão. O que significa que ele provavelmente não valeria a pena para alterar o texto de forma pragmática, em primeiro lugar.

Você pode usar o próprio Photoshop para fazer isso com OLE. Você precisará instalar o Photoshop, é claro. Win32 :: OLE em Perl ou módulo similar em Python. Consulte http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide .pdf

Se você estiver indo para automatizar o Photoshop, você praticamente tem que usar próprios sistemas de script do Photoshop. Eu não acho que há uma maneira de contornar isso.

Olhando para o problema de uma maneira diferente, você pode exportar a partir do Photoshop para algum outro formato que suporta camadas, como PNG, que é editável pelo ImageMagick?

Você também pode tentar isso usando Node.js. Fiz um PSD ferramenta de linha de comando

instalar comando de uma linha (necessidades NodeJS / NPM instalado)

npm install -g psd-cli

Você pode então usá-lo digitando em seu terminal

psd myfile.psd -t

Você pode verificar o código para usá-lo de outro script nó ou usá-lo através de seu shell é de outro / Perl / whatever roteiro Bash.

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