Como decodificar uma string de imagem usando base64 na linha de comando?

2

Digamos que eu tenha uma imagem image1.jpg
Eu posso codificá-lo usando a ferramenta base64 :

myImgStr=$(base64 image1.jpg)

Eu tentei decodificá-lo usando o seguinte comando:

base64 -i -d $myImgStr > image2.jpg

ou

echo -n $myImgStr | base64 -d -i > image2.jpg

Mas, em ambos os casos, recebo o seguinte erro:

base64: extra operand ‘/9j/4AAQSkZJRgABAQAAAQABAAD/7QCEUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAGgcAmcAFHNH’ Try 'base64 --help' for more information.
Qualquer ajuda é apreciada.

    
por Navaro 21.04.2017 / 22:44

2 respostas

6

O utilitário base64 lê sua entrada a partir de um arquivo cujo nome é fornecido como um argumento ou da entrada padrão. Nunca lê sua entrada de um argumento de linha de comando. No seu caso, para decodificar uma string armazenada em uma variável, você deve fornecer a string na entrada padrão de base64 .

Se você estiver usando o Bash, você pode usar uma string aqui:

base64 -d <<< "$myImgStr" > image2.jpg

Se o seu shell não aceitar aqui, você sempre poderá usar:

echo "$myImgStr" | base64 -d > image2.jpg

(Observe o doublequotes em torno de "$myImgStr" . Você deve sempre duplicar as expansões de variáveis, a menos que tenha uma boa razão para não fazê-lo.)

    
por AlexP 21.04.2017 / 23:05
0

Como exportar o arquivo PDF Quote Quote do Salesforce e ler convertê-lo do Base64 de volta para PDF usando a linha de comando do Linux

  1. Use o Dataloader e exporte o objeto QuoteDocument com todos os campos e dados

dataloader1

dataloader2

dataloader3

2. Use o editor de texto, TextPad para abrir o arquivo csv. Não use o Bloco de notas porque ele não pode manipular os dados de tamanho grande e os truncará. 3. O TextPad pode manipular os dados grandes e respeita qualquer caractere de nova linha, etc., quando você abre o arquivo e também quando copia / cola os dados. 4. Vá para uma linha específica nos dados e selecione e copie a cadeia do campo da célula que contém os dados codificados em Base64 do PDF. Certifique-se de selecioná-lo até o final, mas não inclua campos subsequentes depois dele.

textpad1

  1. Não inclua campos subsequentes depois disso.
  2. Selecione a string até, mas não inclua a frase "símbolo".

textpad2

  1. Copie / cole a string em uma nova janela do TextPad.
  2. Salve o novo TextPad em um arquivo, por exemplo, document1.txt
  3. Copie o arquivo docuemnt1.txt para o seu computador Linux (você pode usar o Dropbox para isso).
  4. Abra uma janela do terminal de linha de comando do Linux
  5. Execute o comando base64 decode (base64 faz parte do pacote coreutils), $ base64 --decode ~ / Dropbox / linux_stuff / Document1.txt > ~ / Dropbox / linux_stuff / decoded1.pdf
  6. Esse comando lerá no arquivo Document1.txt e emitirá o arquivo PDF decodificado para decoded1.pdf.
  7. Agora você pode abrir o arquivo decoded1.pdf como um arquivo PDF.
  8. Você pode renomear o arquivo decoded1.pdf para o que quiser, ou seja, voltar para o nome do arquivo original que estava anexado no registro do objeto de cotação do Salesforce original.

linux_command_line

    
por Martin Hurst 13.12.2017 / 19:54