
Empacote até 3 MB de dados em um arquivo PNG poliglota tweetável.
Empacote até 3MB de dados em um arquivo PNG poliglota tweetável.
Veja em ação aqui: https://twitter.com/David3141593/status/1371974874856587268

Outros hosts de imagem nos quais verifiquei que essa técnica funciona:
Imgur (https://i.imgur.com/kNhGrN3.png)
Imagem de miniatura/cabeçalho de repositório do Github (https://repository-images.githubusercontent.com/348501512/06710f00-8886-11eb-95d1-3f416fa3853a)
Discord (Não é uma grande surpresa, já que eles suportam arquivos arbitrários de qualquer forma) (https://cdn.discordapp.com/attachments/464905259261755392/823171702170845199/06710f00-8886-11eb-95d1-3f416fa3853a)
Hosts de imagem que confirmei que não funcionam:
O Twitter remove dados desnecessários de uploads PNG, no entanto, eles não removem dados finais do fluxo DEFLATE dentro do chunk IDAT, desde que o arquivo de imagem geral atenda aos requisitos para evitar ser recodificado.
Sei lá.
A imagem de capa deve comprimir bem, de modo que o tamanho comprimido seja menor que
(width * height) - size_of_embedded_file. Se a imagem de capa não tiver uma
paleta, ela deve ter pelo menos 257 cores únicas (caso contrário, o Twitter
a otimizará para usar uma paleta).
A resolução pode ser de até 4096x4096, no entanto, esteja ciente de que o Twitter servirá uma versão redimensionada por padrão, para imagens maiores que 680x680 (dependendo do DPI da sua tela, etc.).
A imagem não deve ter chunks de metadados desnecessários. Usei estas configurações de exportação no GIMP:

O tamanho total do arquivo de saída deve ser menor que 3MB (talvez 5MB?), caso contrário, o Twitter converterá o PNG para JPEG.
Se o arquivo embutido for um .zip, os offsets são ajustados automaticamente
para que o arquivo geral ainda seja um zip válido. Para quaisquer outros formatos de arquivo, você está
por conta própria (muitos funcionarão sem tratamento especial, notadamente .pdf, .mp3).