Twitter に画像(PNG・JPEG)をアップロードし、これを表示する際、URLの末尾によってそれぞれ異なるサイズの画像が得られるが、これに関する覚え書きなど。
Twitter の画像サイズ種別
Twitter にアップロードした画像は、以下のような URL で参照(表示)できる。
https://pbs.twimg.com/media/~.<拡張子>[:サイズ種別]
サイズ種別は以下のようになっている。
:サイズ種別 | 最大サイズ(*1) |
---|---|
:thumb | 150px×150px |
:small | 680px×680px(*3) |
:medium (なし) |
1200px×1200px(*3) |
:large | 2048px×2048px(*3) |
:orig | 4096px×4096px(*3) |
(*1) このサイズ内の画像は原寸で取得できるが、それ以上のものは矩形に収まるよう縮小される(:thumbについては、短辺に合わせてトリミング&リサイズされているものと思われる)。
なお、各種別毎の最大サイズは2016/02/24時点。これまでも何度か変更されている模様。
(*2) 2016/04/13の時点で確認した内容に修正(いつの時点で変更されたかは不明、過去の画像サイズはそのまま)。矩形に収めるようにではなく、横幅を基準に縮小されている?
(*3) 2016/06/05の時点で確認した内容に修正(いつの時点で変更されたかは不明、過去の画像サイズはそのまま)。再び、矩形に収めるように縮小されるようになった(戻った)?
また、試した範囲では、:orig を除く種別については、アップロードした画像の種別(PNG/JPEG)に関わらず、二種類(PNGおよびJPEG)の画像がそれぞれ作成される模様。
これはURL中の拡張子の部分を、pngにしたものとjpgにしたものとをダウンロードして調べた。なお、拡張子をgifにしたものもダウンロードできるが、中身はPNG形式のものと同一の模様。
原寸画像(:orig)の画像種別について
:orig については、2016/02/24時点で、表示(ダウンロード)できるのは PNG もしくは JPEG のどちらかに限られる(それ以外は 404 not found となる)。
アップロードした画像の種別と、実際に表示(ダウンロード)出来る画像の関係は以下のようになっている。
アップロード種別 | PNG(.png:orig)を表示 | JPEG(.jpg:orig)を表示 |
---|---|---|
JPEG | × | ○ |
× | ○ | |
○ | × |
なお、種別に関わらず、Twitter側での画像変換は実施されるため、完全に元画像と同じものではない。
トピックス
原寸画像(:orig)の劣化を抑えるには?(アップロードの前に)
24bpp(アルファチャンネル無し)透明ピクセル無しのPNG画像はJPEGに変換されてしまうため、PNG形式のままで表示(ダウンロード)させたい場合は、32bpp(アルファチャンネル有り)に変換透明ピクセルを追加した後にアップロードするのが今のところ解決方法となる。
ただし、32bpp のPNG 画像が :orig を付けて原寸でダウンロードできた場合も、元画像そのものがダウンロードできるわけではなく、Twitter側で変換されたものになる(アップロードしたものとはファイルサイズ等が異なっている)。
既存の画像については、例えばPNG 32bpp変換 | しぇ庫を使って簡単に24bppから32bppへ変換できる(2016/02/27現在、Twitterの仕様変更により、透明ピクセル追加の対応検討中とのこと→2016/02/28に改訂版がリリースされた)。
TwitterでPNGがJPEG変換されないよう32bppに変換するツール #PNG32bpp変換 を公開しました。D&D、コピペ、「送る」から呼び出せて、投稿欄へ直接ドロップできますhttps://t.co/4rvmWQnyae pic.twitter.com/20OBfopz75
— シェゴ (@syego) 2016年2月21日
Twitter社の仕様変更により本ツールで生成した画像もJPEG変換されるようになってしまいました。画像生成時に適当に透明ピクセルを設定するよう変更を検討中です。https://t.co/4rvmWQnyae
— シェゴ (@syego) February 27, 2016
Twitterの仕様変更により、透明画素が無い場合や3MBを超える場合もJPEG変換の対象になったようなので、苦し紛れに対応したバージョンをリリースします。https://t.co/4rvmWQnyae #PNG32bpp変換 pic.twitter.com/ZZFmwp8FIc
— シェゴ @ PNG変換ver0.2公開 (@syego) 2016年2月28日
原寸画像を表示・保存するためのブラウザ拡張機能/スクリプト
PC 用ブラウザで、Web 版 Twitter の原寸画像を表示したり、ダウンロードしたり出来る拡張機能/ユーザースクリプト等。
furyu.hatenablog.com
いちいち :orig をつけたり、ダウンロード時に拡張子を修正するのが面倒だったので、↓の二つを参考に、独自機能も付け加えて自作したもの。原寸表示・ダウンロード共に対応。Google Chrome、Opera、Firefox(Greasemonkey)に対応(ブックマークレットは一部機能を IE11 にも対応)
hogashi.hatenablog.com
chrome.google.com
試行錯誤など
豆知識:
— 風柳 (@furyutei) April 13, 2016
PCのブラウザから、Web版Twitterに縦もしくは横が1pxの画像を添付してツイートしようとすると、「サーバー内部のエラー」とかなってツイートできない。
8001px × 8001pxの透過png→8000px × 8000px の jpg:orig
— 風柳 (@furyutei) April 13, 2016
8000px x 8000pxの透過png→8000px × 8000px の jpg:orig
原寸画像も 8000 ピクセルまで?
どちらも 270KB強だが jpg になったし
スマートフォンで公式アプリを使った場合、最大横2048pxあたりまで(アプリ側で)縮められてしまうのかも…?
イオンモールが見えたので、もう迷う心配は無かろうと、ちょっと近くの公園(?)に寄り道…。 pic.twitter.com/SytQxs6ZlE
— 風柳 (@furyutei) April 1, 2016
↑は元画像がJPEG・3264px×2448px(3.39MB)だが、:orig で見ても2048px×1536pxまで縮小させれてしまっている。