@morjs/runtime-web
Version:
mor runtime for web
141 lines • 5.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
const getImageWH = (path) => {
return new Promise((resolve, reject) => {
// const oImg: HTMLImageElement = document.getElementById('oImg') as HTMLImageElement;
const nImg = new Image();
nImg.onload = () => {
resolve({
width: nImg.width,
height: nImg.height
});
};
nImg.onerror = (error) => {
reject(error);
};
nImg.src = path;
});
};
const getImageSize = (path) => {
return new Promise((resolve, reject) => {
const image = new Image();
image.onload = () => {
resolve({
width: image.naturalWidth,
height: image.naturalHeight
});
};
image.onerror = (error) => {
reject(error);
};
image.src = path;
});
};
exports.default = {
compressImage() {
return new Promise((resolve) => {
const res = {
apFilePaths: []
};
resolve(res);
});
},
/**
* 从本地相册选择图片。
* @param {Object} options 参数
* @param {number} [options.count=1] 最多可以选择的图片张数
*/
chooseImage(options) {
return new Promise((resolve, reject) => {
const isObject = (0, utils_1.shouldBeObject)(options);
if (!isObject.res) {
const res = { errMsg: `chooseImage ${isObject.msg}` };
console.error(res.errMsg);
return reject(res);
}
const { count = 1 } = options;
const imageId = 'tigaChooseImage';
const res = {
errMsg: 'chooseImage:ok',
tempFilePaths: [],
apFilePaths: [],
tempFiles: []
};
if (count && typeof count !== 'number') {
res.errMsg = (0, utils_1.getParameterError)({
name: 'chooseImage',
para: 'count',
correct: 'Number',
wrong: count
});
console.error(res.errMsg);
return reject(res);
}
let tigaChooseImageHandler = document.getElementById(imageId);
if (!tigaChooseImageHandler) {
tigaChooseImageHandler = document.createElement('input');
tigaChooseImageHandler.setAttribute('type', 'file');
tigaChooseImageHandler.setAttribute('id', imageId);
if (count > 1) {
tigaChooseImageHandler.setAttribute('multiple', 'multiple');
}
tigaChooseImageHandler.setAttribute('accept', 'image/*');
tigaChooseImageHandler.setAttribute('style', 'position: fixed; top: -4000px; left: -3000px; z-index: -300;');
document.body.appendChild(tigaChooseImageHandler);
}
else {
if (count > 1) {
tigaChooseImageHandler.setAttribute('multiple', 'multiple');
}
else {
tigaChooseImageHandler.removeAttribute('multiple');
}
}
const TigaMouseEvents = document.createEvent('MouseEvents');
TigaMouseEvents.initEvent('click', true, true);
tigaChooseImageHandler.dispatchEvent(TigaMouseEvents);
tigaChooseImageHandler.onchange = function (e) {
const target = e.target;
const arr = Array.from(target.files);
arr &&
arr.forEach((item) => {
const blob = new Blob([item], {
type: item.type
});
const url = URL.createObjectURL(blob);
res.tempFilePaths.push(url);
res.apFilePaths.push(url);
res.tempFiles.push({
path: url,
size: item.size,
type: item.type,
originalFileObj: item
});
});
resolve(res);
target.value = '';
};
});
},
getImageInfo(options) {
const { src } = options;
return new Promise((resolve, reject) => {
Promise.all([getImageSize(src), getImageWH(src)])
.then((values) => {
const sizeInfo = values[0] || {};
const imageInfo = values[1] || {};
resolve(Object.assign(Object.assign({}, imageInfo), { size: sizeInfo.size, type: sizeInfo.type }));
})
.catch((err) => {
reject(err);
});
});
},
saveImage() {
return new Promise((resolve) => {
resolve();
});
}
};
//# sourceMappingURL=image.js.map