//===================================================
// <img>要素 -> Base64形式の文字列に変換
// img : HTMLImageElement
// mime_type : string "image/png", "image/jpeg", etc
//===================================================
function cvtImageToBase64(img, mime_type) {
// New canvas
let canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
// Draw image
let ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// To base64
return canvas.toDataURL(mime_type);
}
//===================================================
// Base64形式の文字列 -> <img>要素に変換
// base64img : Base64形式の文字列
//===================================================
async function cvtBase64ToImage(base64img) {
// 画像データの取得(同期処理)
const loadImage = (src) => {
const image = new Image();
return new Promise((resolve, reject) => {
image.onload = () => { // 成功
resolve(image);
};
image.onerror = (e) => { // 失敗
reject(e);
};
image.src = base64img; // トリガー
});
};
const img = await loadImage(blobURL).catch(e => {
console.log("[ERROR] image.onload");
return;
});
return img;
}
//===================================================
// File -> Base64形式の文字列に変換
// file : File
//===================================================
async function cvtImageToBase64(file) {
// Blob URLの作成
let blobURL = window.URL.createObjectURL(file);
// Blobの作成
const blob = await fetch(imageAttribList[i].blob_url).then(r => r.blob()); // 同期処理 (blob-url to blob)
const filetype = blob.type; // mime_type: 'image/png', 'image/jpeg', etc
// to Base64 Text
const reader = new FileReader();
reader.readAsDataURL(file);
await new Promise(resolve => reader.onload = () => resolve()); // 同期処理
const base64DataURL = reader.result;
const base64Str = base64DataURL.split(',')[1];
};
async function() {
let blob = await fetch(url).then(r => r.blob());
}