LoginSignup
3
2

More than 3 years have passed since last update.

next.jsで画像圧縮のblueimp-load-imageしてみる

Last updated at Posted at 2019-12-24

画像圧縮してFirebaseアップしたかったのでメモ

パッケージインストール

npm install --save blueimp-load-image

canvas->blob変換

blobに変換してFirebaseへ送るようにするとできた

  const dataUri = canvas.toDataURL(type);
  var bin = atob(dataUri.split(',')[1]);
  var buffer = new Uint8Array(bin.length);
  for (var i = 0; i < bin.length; i++) {
    buffer[i] = bin.charCodeAt(i);
  }
  var blob = new Blob([buffer.buffer], { type: type });

画像圧縮してblob変換してストレージへ保存

loadImage.parseMetaData(file, (data) => {
  const options = {
    maxHeight: 300,
    maxWidth: 300,
    canvas: true,
  };
  if (data.exif) {
    options.orientation = data.exif.get('Orientation');
  }
  //画像圧縮
  loadImage(file, (canvas) => {
    //変換
    var type = 'image/jpeg';
    const dataUri = canvas.toDataURL(type);
    var bin = atob(dataUri.split(',')[1]);
    var buffer = new Uint8Array(bin.length);
    for (var i = 0; i < bin.length; i++) {
      buffer[i] = bin.charCodeAt(i);
    }
    var blob = new Blob([buffer.buffer], { type: type });
    //ストレージへ保存
    query.put(blob, { contentType: file.type })
      .then(function (snapshot) {

      }).catch(function (error) {
        console.error("Error getting document:", error);
      });
  }, options);
});

参考サイト

Canvas に描いた画像を png などの形式の Blob に変換する方法: Tender Surrender
https://blog.agektmr.com/2013/09/canvas-png-blob.html

blueimp/JavaScript-Load-Image
https://github.com/blueimp/JavaScript-Load-Image

JavaScript(ES2015&React)で画像を扱う:リサイズとプレビュー表示
https://blog.agektmr.com/2013/09/canvas-png-blob.html

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2