function getImageFileInfo(file) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.onerror = (e) => {
console.error('读取异常')
reject(false)
}
reader.onloadend = (e) => {
let image = new Image();
image.src = e.target.result;
image.onload = () => resolve([image, e.target.result])
}
reader.readAsDataURL(file);
})
}
function getImageSizeCheck(image, option) {
function gcd(a, b) {
if (b == 0) return a;
return gcd(b, a % b)
}
const { width = 1920, height = 1080, size = 10240, ratio = 0.15 } = option || {};
const { width: w, height: h, size: s } = image;
const imgRatio = w / h; // 图片尺寸比例
const optRatio = width / height; // 预设尺寸比例
let msg = '';
if (size < s) msg = `图片需小于${size}KB,`;
if (imgRatio > optRatio + ratio && imgRatio < optRatio - ratio) msg += `图片尺寸需符合${w}*${h}或${w / gys(w, h)}:${h / gys(w, h)}比例`;
if (msg) throw new Error(msg);
return true;
}
function gys(...args) {
const [item, ...rest] = args;
if (rest.length < 1) return a;
if (rest.length === 1) {
let a = item, b = rest[0];
while (a > 0 && b > 0 && a != b) {
if (a > b) a -= b;
else b -= a;
}
return a
}
return gys(item, gys(...rest))
}
const [image, img] = await getImageFileInfo(file);
getImageSizeCheck(image, { size: 1024, width: 1920, height: 1080 })
图片尺寸比例和大小校验
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 为按钮设置网络图片, 可以使用SDWebImage第三方库提供的UIButton+WebCache.h 分类 提供...
- 关于iOS应用首次提交AppStore所需文件参考这里 1.APP图标 需要尺寸如下: 58 * 58px 80 ...