PNGを回転

PNGファイルをアップロードすると、90度、180度または270度回転できます。PNGは無損失形式であるため、JPGのように繰り返し再符号化によってアーチファクトが蓄積するのではなく、質の低下なく自由に何回でも回転可能です。透明度は保持され、90度の倍数で回転した場合、サイズが自動的に逆転します(1920×1080から1080×1920へ)。

PNGの回転処理の仕組み

  1. 1

    PNGをデコードします

    デフレート処理で圧縮されたピクセルデータは、未圧縮のRAW形式のARGBバッファに復元されます。

  2. 2

    バッファを回転させます

    ピクセルは新しい向きに合わせてアドレスが変更されます。90°では行と列が入れ替え、180°では両方が反転します。

  3. 3

    PNG形式に再エンコードします

    回転されたピクセルバッファはdeflateを用いて再圧縮されます。出力は常に無損失です。

  4. 4

    透明度を保持する

    アルファチャンネルはRGBとともに回転するため、透明な領域は透明のままとなります。

PNGの回転処理が常に無損失となる理由

PNGはピクセルを正確に符号化しており、JPEGのように量子化や8×8のDCTブロックを用いていません。90度の整数倍で回転しても、ピクセルの位置のみが変化し、色値はそのままです。任意の角度で回転しても、最寄り隣接フィルターではなく適切な再サンプリングフィルター(双三次フィルター、ランツォスフィルター)を使用すればデータ品質は維持されます。

回転オプション

操作 幅/高さの変更 主な用途
90°時計回り 入れ替え 縦写真から横写真へ
180° 変更なし 反転したスキャン、上下逆の撮影
270°時計回り 入れ替え 横から縦へ逆方向
任意の角度 収まるように拡大 傾いたスキャンや写真をまっすぐに

回転後のファイルサイズ

PNGのデフレ圧縮は行ごとの重複情報に敏感である。ほぼ水平な縁が中心となる風景写真は、隣接する行が類似しているため効率的に圧縮できる。しかし、90度回転するとこれらの縁が垂直方向に変化し、その結果、写真コンテンツの圧縮効率が顕著に低下する。

コンテンツタイプ 90°後の典型的なサイズ変化
フラットカラーグラフィック <1%の変更
UIスクリーンショット 1~5%の変更
写真(PNG形式) 最大15~20%拡大可能
透明なUIアセット 無視可能

写真の場合は、向きに関わらずJPGがより適したフォーマットです。PNG形式の写真を回転するとサイズが大幅に増大した場合は、JPGに変換するべきです。

透明度

完全に透明なピクセル、半透明なピクセルおよび不透明なピクセルはすべて一緒に回転します。アルファチャンネルはRGBチャンネルに従います。ソフトなドロップシャドウを持つロゴも回転後も変化せず、シャドウは単に反対側に移動するだけです。

ブラウザでのローテーションとCSSでのローテーションのタイミング

  • ファイルを回転するのは、ディスク上で画像の向きが誤っているとき、回転メタデータを無視する場所にアップロードするとき、または印刷するときです。
  • CSSで回転するには、ウェブページ上で一時的な見た目の回転だけが必要なときに transform: rotate(...) を使います。ファイル自体は変わらず、ブラウザが表示時に回転を合成します。

多重回転

PNGでは回転を自由に連続して適用できます。90 + 90 + 90 + 90という処理により、正確な元のビットデータに戻ります(少なくともピクセル内容に関してはそうですが、エンコーダのパラメータによって数ビットの差が生じる場合があります)。JPGは再エンコードによる情報損失があるため、同様の保証を提供しません。

メタデータ

PNGはメタデータ用のテキスト断片(tEXt、iTXt、zTXt)を保持できます。このツールはピクセルをcanvas上で描き直して新しいPNGを書き出すことで回転するため、これらのテキスト断片は回転後のファイルには引き継がれません。埋め込みメタデータを残す必要がある場合は、断片をコピーするツールで回転するか、回転後にメタデータを付け直してください。

よくある質問

はい、わずかに異なります。PNGの圧縮方式は行ごとに処理されるため、画像の内容によって90度回転するとファイルサイズが1~20%変化する場合があります。

はい。PNGはピクセルを正確に符号化しているため、回転や再保存しても品質が損なわれません、JPGとは異なります。

はい。アルファチャンネルはRGBチャンネルと同時に回転されるため、透明な領域も透明のままになります。

このツールは、アンチアライゼド再サンプリングを用いて任意の角度に対応しています。回転処理自体では色の忠実性に影響なく損失が生じませんが、エッジはピクセルレベルで完全な再現ではなく、アンチアライズされた状態になります。

デコード、回転、再エンコードのすべての処理は、ブラウザ内のキャンバスとPNGエンコーダを用いて実行されます。

関連ツール

このツールは他の言語でも利用できます