言語アイコン

JavaScriptで画像をgzipに圧縮する

参照

コード

// 画像データの読み込み
const encodeSplit = base64Data.split(',');

// atobで Base64(string) ➡ バイナリ画像データ(string) に変換
const encodeImg = atob(encodeSplit[1]);

// バイナリデータをpako.gzipで圧縮
// btoaで バイナリ(string) ➡ Base64(string) に変換
const gzipBase64Data = btoa(new pako.gzip(encodeImg));

console.log("Base64 To GZip Encode");

// atobで Base64(string) ➡ バイナリ(string) に変換
// Base64をカンマ(,)区切りで切り分けて、数値配列化(object)
// new Uint8Arrayでバイナリ配列化(Uint8Array)
const base64BinaryData = (new Uint8Array(atob(gzipBase64Data).split(',').map(Number)));

// バイナリ配列を pako.ungzipで解凍(string)
const gzipBinaryData = new pako.ungzip(base64BinaryData);

// btoaで バイナリ画像データ(string) ➡ Base64(string) に変換
const decodeImg = btoa(gzipBinaryData);