
最大3MBのデータをツイート可能なPNGポリグロットファイルにパックします。
最大3MBのデータをツイート可能なPNGポリグロットファイルにパックします。
実際の動作はこちら: https://twitter.com/David3141593/status/1371974874856587268

この手法が動作することを確認した他の画像ホスト:
Imgur (https://i.imgur.com/kNhGrN3.png)
Githubリポジトリのサムネイル/ヘッダー画像 (https://repository-images.githubusercontent.com/348501512/06710f00-8886-11eb-95d1-3f416fa3853a)
Discord(任意のファイルをサポートしているので当然ですが)(https://cdn.discordapp.com/attachments/464905259261755392/823171702170845199/06710f00-8886-11eb-95d1-3f416fa3853a.png)
動作が確認できなかった画像ホスト:
TwitterはPNGアップロードから不要なデータを除去しますが、画像ファイル全体が再エンコードを回避するための要件を満たしている場合、IDATチャンク内のDEFLATEストリームの末尾データは除去しません。
わからない。
カバー画像は圧縮率が高く、圧縮後のファイルサイズが (幅 × 高さ) - 埋め込みファイルのサイズ 未満である必要があります。カバー画像にパレットがない場合、少なくとも257色以上のユニークな色が必要です(そうしないとTwitterがパレットを使用するように最適化します)。
解像度は最大4096x4096まで可能ですが、680x680を超える画像の場合、Twitterはデフォルトで縮小版を提供することに注意してください(ディスプレイのDPIなどによります)。
画像には不必要なメタデータチャンクを含めるべきではありません。私はGIMPで以下のエクスポート設定を使用しました:

出力ファイル全体のサイズは3MB(あるいは5MB?)未満である必要があります。そうしないとTwitterがPNGをJPEGに変換します。
埋め込みファイルが.zipの場合、オフセットが自動的に調整され、全体のファイルが依然として有効なzipになります。他のファイル形式の場合は自己責任でお願いします(多くの形式は特別な処理なしで動作します。特に.pdf、.mp3など)。