📷

ブラウザ上で HEIC/HEIF を PNG/JPEG に変換する方法

2022/12/15に公開

色々探したがこちらの heic2any しかなさそうだった。

https://alexcorvi.github.io/heic2any/

heic-convert というものもあったが、こちらは Node.js でないと動かない。

https://github.com/catdad-experiments/heic-convert#readme

まずはインストールして

npm install heic2any

こんな感じで使う。

import heic2any from 'heic2any';

export const readImage = async (reader: FileReader, imageFile: Blob) => {
  if (imageFile.type === 'image/heif' || imageFile.type === 'image/heic') {
    const outputBlob = await heic2any({
      blob: imageFile,
      toType: 'image/jpeg',
    });
    if (!Array.isArray(outputBlob)) {
      reader.readAsDataURL(outputBlob);
    }
  } else {
    reader.readAsDataURL(imageFile);
  }
};

ちなみに中身ではこちらの libheif というライブラリを Worker から実行していた。

https://github.com/catdad-experiments/libheif-js#readme

そしてこれはこちらを JS から実行できるようにしたものっぽい。

https://github.com/strukturag/libheif

Discussion