react-image-input
Version:
get your image input field easy and ready to go
67 lines (60 loc) • 2.15 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['exports'], factory);
} else if (typeof exports !== "undefined") {
factory(exports);
} else {
var mod = {
exports: {}
};
factory(mod.exports);
global.images = mod.exports;
}
})(this, function (exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
resizeImage: function resizeImage(dataUrl, imageType) {
var maxWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var maxHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
return new Promise(function (resolve, reject) {
var img = document.createElement('img');
img.src = dataUrl;
img.onload = function () {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
var width = img.width;
var height = img.height;
if (maxWidth && width > maxWidth) {
height *= maxWidth / width;
width = maxWidth;
}
if (maxHeight && height > maxHeight) {
width *= maxHeight / height;
height = maxHeight;
}
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
var resizedImageData = canvas.toDataURL(imageType);
if (resizedImageData) resolve({ resizedImageData: resizedImageData, imageType: imageType });else reject('Error resizing image');
};
});
},
getImageType: function getImageType(dataUrl) {
return dataUrl.slice(0, dataUrl.indexOf(';')).slice(dataUrl.indexOf(':') + 1);
},
convertToBlob: function convertToBlob(dataUrl, type) {
var binStr = atob(dataUrl.split(',')[1]);
var len = binStr.length;
var arr = new Uint8Array(len);
for (var i = 0; i < len; i++) {
arr[i] = binStr.charCodeAt(i);
}
return new Blob([arr], { type: type || 'image/png' });
}
};
});