明道云如何识别用户上传图片的分辨率大小 全耘伸Lv.3修习 发布于 2023-05-08 17:28 最后回复 2023-05-11 11:09:56 分享 收藏 复制链接 新浪微博 微信扫一扫 分享 21 回复1388 浏览 业务场景: 有些业务,需要用户上传照片,我们要求是横拍,有些用户会不自觉拍成竖拍,或者不清晰, 难点:因为用户年龄层次较大,还有就是用户本身是义务劳动,无法去做强制管理 需求:需要让用户一旦上传不符合要求的图片,直接无法上传成功即可 业务场景: 有些业务,需要用户上传照片,我们要求是横拍,有些用户会不自觉拍成竖拍,或者不清晰, 难点:因为用户年龄层次较大,还有就是用户本身是义务劳动,无法去做强制管理 需求:需要让用户一旦上传不符合要求的图片,直接无法上传成功即可
感谢大佬解决了
明道云可以的,那是你自己参数传错了,把前后两个双引号去掉再试试
太好了,知道怎么获取 PNG 图片的长宽了,多谢。
求其他格式图片的 base64 解析方法。
大佬牛逼,现在就是需要获取 64 代码,但是可恶的明道云不给我实现,大佬请看截图
我测试了以下可以的,用万能的 chatgpt,你就获取一下附件的 base64,判断一下格式,窜下流程就可以了
输入参数:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAE0lEQVQIHWNgYAAAAAMAASDsOGAoAAAAASUVORK5CYII=
代码块内容
var str = input.base64data;
var result = JSON.stringify(get_size(str));
output = {output:result };
function get_size(base64) {
//确认处理的是 png 格式的数据
if (base64.substring(0,22) === 'data:image/png;base64,') {
// base64 是用四个字符来表示 3 个字节
// 我们只需要截取 base64 前 32 个字符(不计开头那 22 个字符)便可(24 / 3 * 4)
// 这里的 data 包含 12 个字符,9 个字节,除去第 1 个字节,后面 8 个字节就是我们想要的宽度和高度
const data = base64.substring(22 + 20, 22 + 32);
const base64Characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const nums = [];
for (const c of data) {
nums.push(base64Characters.indexOf(c));
}
const bytes = [];
for(let i = 0; i < nums.length; i += 4) {
bytes.push((nums[i] << 2) + (nums[i+1] >> 4));
bytes.push(((nums[i+1] & 15) << 4) + (nums[i+2] >> 2));
bytes.push(((nums[i+2] & 3) << 6) + nums[i+3]);
}
const width = (bytes[1] << 24) + (bytes[2] << 16) + (bytes[3] << 8) + bytes[4];
const height = (bytes[5] << 24) + (bytes[6] << 16) + (bytes[7] << 8) + bytes[8];
let result = {"width":width,"height":height};
return result;
}
return {"width":0,"height":0};
}
感谢大佬,看样子明道云不支持这个附件,只能用第三方的 API
你说的对的,你如果需要这么干还得先到 base64,在代码块里理论上可行的
我觉得我是不是弄混了,好像明道云支持编码提交,并不支持编码获取
大佬大佬,帮我看看这个,我的设想是这样的,我看到明道云附件有 API 数据,其中包括图片的 base64 编码,所以我就百度了一下如何从 base64 编码获取图片宽和高,答案找到了(见下方链接)。但是链接的代码我不会用,求大佬指点一二!
https://www.codenong.com/j5ef1e9a46fb9a05892656231/
大佬大佬,帮我看看这个,我的设想是这样的,我看到明道云附件有 API 数据,其中包括图片的 base64 编码,所以我就百度了一下如何从 base64 编码获取图片宽和高,答案找到了(见下方链接)。但是链接的代码我不会用,求大佬指点一二!
https://www.codenong.com/j5ef1e9a46fb9a05892656231/
大佬大佬,帮我看看这个,我的设想是这样的,我看到明道云附件有 API 数据,其中包括图片的 base64 编码,所以我就百度了一下如何从 base64 编码获取图片宽和高,答案找到了(见下方链接)。但是链接的代码我不会用,求大佬指点一二!
https://www.codenong.com/j5ef1e9a46fb9a05892656231/
大佬大佬,帮我看看这个,我的设想是这样的,我看到明道云附件有 API 数据,其中包括图片的 base64 编码,所以我就百度了一下如何从 base64 编码获取图片宽和高,答案找到了(见下方链接)。但是链接的代码我不会用,求大佬指点一二!
https://www.codenong.com/j5ef1e9a46fb9a05892656231/
明白,如果只能这样,那应该是唯一解了
这个比较现实的方案是用户上传后触发工作流调第三方 API 来判断精度,然后推送通知,比如短信
这思路不对的,代码里获取不到 dom 对象的,包括图像、音频等等都不行
明道云的 nodejs 里面好像不支持
![image.png]()
Image()方法,看报错是找不到这方法大佬,我网上搜了一段代码,你帮我试试,我没有任何代码基础
function setImg() {
var docObj = document.getElementById("imgPath");
var files = document.getElementById("imgPath").value;
if (null == files || '' == files) {
.messager.alert('温馨提示','请上传图片封面信息。','info'); return; } if(!uploadType(finals(files,"suffix"))){ .messager.alert('温馨提示','请上传 bmp,png,gif,jpeg,jpg 格式的图片','info');
return false;
};
就写一行: var img = new Image();
点击测试后直接报错:ReferenceError: Image is not defined ...
代码有吗
试了 js 代码块,发现里面不支持 new Image(),好像不行。
代码块判断,然后推送通知