iPhoneのカメラは既定でHEIC(HEIF)に保存します。端末内では小さくて済みますが、外では扱いにくい形式です。Outlook、大学のポータル、「JPGのみ」と書かれたPDFフォームなどが該当します。LocalPixのHEIC→JPGは、libheif-jsのWASM(LGPL-3.0)でデコードし、ファイルを選んだときだけ読み込んで、canvasでJPEGとして保存します。LocalPixのアップロードAPIへ何も送信しません。
変換すべきもの、そうでないもの
- 拡張子が
.HEICや.HEIFのカメラ写真:このツールの対象です。 - スクリーンショット:iOSでは通常PNGです。HEICではありません。KB指定で圧縮を使ってください。
- Live Photos:静止画がHEICで、動きは別の動画です。静止画だけを変換してください。
- すでにJPEGの場合:HEICデコーダに通さないでください。サイズが大きいだけなら添付のKB上限へ。
手順
- iPhoneで写真を共有するか、元のHEICのままAirDropで送ります(すでに使えるJPEGがあるなら「互換性優先」でなくて構いません)。送信に使うパソコンへコピーします。
- HEIC→JPGを開きます。確認したい場合はローカル検証とトップページのアップロード0バイトのチェックリストを使ってください。ファイルを選ぶ前は、libheifのWASMがダウンロードされないはずです。
- HEICをドラッグします。約1.5 MBのWASMがその時点で読み込まれ、写真はタブ内でデコードされます。
- フォームに厳しいサイズ上限がない限り、JPEG画質は92のままにします。変換してプレビューを確認します。
.jpgをダウンロードし(ローカルのblob:URL)、HEICではなくそのファイルを添付します。
よくある失敗
- 向き。HEICによっては回転がピクセルではなくメタデータに入っています。プレビューが横倒しや逆さまなら送らないでください。ローカルのエディタで回転し、JPEGで書き出し直します。「アスペクト比が違う」と自動で弾くフォームは直してくれません。
- 画質とサイズ。92なら証明写真用途では十分鮮明ですが、200 KBのポータルには重すぎます。スライダーを少し下げるか、JPGをKB指定で圧縮に通して表示されるサイズを確認してください。2回の再エンコードは文字と髪を甘くします。
- まれなHEICの亜種はデコードできないことがあります(10ビット、珍しいブランド、静止画でないファイルなど)。ページ上にエラーが出ますが、バイト列はアップロードされていません。写真アプリから再書き出しするか、端末がすでに保存しているJPEGを使ってください。
- スマートフォンのバックアップは別の話です。iCloudフォトを使っていれば、写真はすでにiCloudにあります。LocalPixが2回目のアップロードを足すことはありません。libheifのNOTICEはライセンスをご覧ください。
よくある質問
HEICは端末から出ますか?
いいえ。デコードはファイルを選んだ後にブラウザ内で行われます。ネットワークタブには/assets/libheif/からのlibheifが現れますが、写真がLocalPixのドメインへPOSTされることはありません。手順:ローカル検証。
JPGが回転して見えるのはなぜ?
回転がピクセルと別に保存されていることがあります。ファイル名ではなくプレビューを信じてください。メールやフォームへ添付する前に、ローカルで向きを直してください。
画質は何を選べばいいですか?
まず92から。相手がKB上限を指定したときだけ下げ、何度も盲目的に書き出すよりKB指定で圧縮を1回通すほうが安全です。