Até recentemente atualizar para o macOS 13 (Ventura), eu poderia executar este comando Bash para converter uma imagem JPEG em uma string Base64 em um script que uso ocasionalmente:
IMAGE_BASE64=$(base64 -b0 /path/to/image.jpg);
O IMAGE_BASE64
valor resultante pode ser usado como variável $IMAGE_BASE64
em meu script.
Mas recentemente tentei usar este script novamente no macOS 13 (Ventura) e este base64
comando estava falhando com o seguinte erro:
base64: invalid argument -b0
Usage: base64 [-hDd] [-b num] [-i in_file] [-o out_file]
-h, --help display this message
-Dd, --decode decodes input
-b, --break break encoded string into num character lines
-i, --input input file (default: "-" for stdin)
-o, --output output file (default: "-" for stdout)
Mudar o comando a ser usado -i
parece resolver o problema:
IMAGE_BASE64=$(base64 -i /path/to/image.jpg);
Mas qual é a diferença entre os dois comandos?
O que estava -b0
fazendo antes do macOS 13 (Ventura) que -i
está sendo feito agora no macOS 13 (Ventura)?
Vai responder a minha própria pergunta.
Duas “pegadinhas” me agarraram aqui e espero que esta resposta ajude alguém em uma posição semelhante no futuro:
-b0
necessidades devem ser definidas para-b 0
os dias de hoje.-i
agora é necessário para indicar qual é o arquivo de entrada.Portanto, simplesmente configurar
-b0
no macOS 13 (Ventura) nunca funcionaria. Precisa ser-b 0 -i
. Mais detalhes abaixo.O
-b0
refere-se a quebras de linha e é o equivalente a--break=0
significar que, quando essa opção é definida como0
quebras de linha, as quebras de linha são desativadas, o que se deseja para dados de imagem binária codificados em Base64; sem quebras de linha!Detalhes encontrados aqui nesta página de manual do Mac OS X 10.7,
base64
bem como a página de manual parabase64
a qual afirma:Sabendo disso, este comando quebra no macOS 13 (Ventura):
Mas esta pequena variante, onde há um espaço entre
-b
e,0
assim como-i
para o arquivo de entrada, funcionaria:Mas o
-i
para o arquivo de entrada agora parece ser necessário e não apenas implícito pelo caminho sendo o último item no comando.Que dor de cabeça sutilmente confusa.