普通の PNG で投稿しても画質の悪い JPEG に変換されるのでこれを透過PNG で投稿することで PNG のまま投稿できた(2019年2月11日頃まで)。
仕様変更の告知:Upcoming changes to PNG image support – Announcements – Twitter Developers
公式の仕様:Media Best Practices — Twitter Developers
2019年2月11日以降で写真は今まで通りJPEGで投稿。イラストのPNGは色が少なければPNG-8に減色する。色が多ければ長辺1200ピクセル、または900ピクセル以下にリサイズする。
2019年2月17日時点でIE10から投稿すると解像度制限は長辺1200ピクセルを超えると最大長辺1200ピクセルにリサイズされた。tween(1.7.2.0)では3899X3001のPNG-8で投稿しPNG-8で表示された。ただし容量制限の5MBのような大容量のPNGはtweenに制限があるのか投稿できなかった。
PNG-8
ffmpeg -i img -filter_complex "split[a][b];[a]palettegen=reserve_transparent=0[pal];[b][pal]paletteuse" -pix_fmt pal8 output.png
長辺1200ピクセル以内にリサイズ
ffmpeg -i img -vf "scale=if(gte(iw\,ih)\,min(1200\,iw)\,-2):if(lt(iw\,ih)\,min(1200\,ih)\,-2)" output.png
長辺900ピクセル以内にリサイズ
ffmpeg -i img -vf "scale=if(gte(iw\,ih)\,min(900\,iw)\,-2):if(lt(iw\,ih)\,min(900\,ih)\,-2)" output.png
コマンド例
コマンドの説明
nullsrc:映像のテストソース。テストソースの中では一番負荷が軽い
scale2ref:映像フィルタ。2入力して、相手側の解像度に合わせることができる
lutrgb:映像フィルタ。特定のRGBに色を変更する
overlay:映像フィルタ。2映像を重ねる
alphamerge:映像フィルタ。2入力して、2入力のグレースケール具合で1入力を透過させる
palettegen:映像フィルタ。最大256色のパレットを作る
paletteuse:映像フィルタ。パレットから元映像を減色する
Continue reading “ffmpeg で Twitter で JPG に劣化させない PNG に変換する”