需求:
用户可上传3-6张图片(第 1 2 3 张必须传),上传的图片必须是540 * 330 像素。
第一步,获取上传的图片的宽高。
初始化一个对象数组,宽高均设为0。
如果用户上传的图片没有上限,可以动态修改这个对象数组。
data:
picArray:[ { width:0, height:0 }, { width:0, height:0 }, { width:0, height:0 }, { width:0, height:0 }, { width:0, height:0 }, { width:0, height:0 } ],
HTML:
<myupload :keys="index" @getBase="getUpImg"> </myupload>
myupload是上传图片的组件,略。
methods:
getUpImg(imgurl, keys){ if(keys === 9){ this.submitData.logo_img = imgurl this.logoImgCount = true } else { Vue.set(this.imgListArray,keys,imgurl) this.$nextTick(function(){ let img = document.getElementById('picId' + keys) // console.log(img) let picArray = this.picArray img.onload = function () { console.log(keys) console.log(this.naturalWidth) console.log(this.naturalHeight) let o = { width: this.naturalWidth, height: this.naturalHeight } Vue.set(picArray,keys,o) console.log('picArray', picArray) } }) } },
关键的代码用红色标出了。
值得注意的是:获取宽高必须用 this.$nextTick ,里面再写 img.onload 。this.naturalWidth 是图片原本的宽高。此时 this 指的是当前图片对象。
第二步,提交之前检验图片的宽高。
methods:
imageCheck(){ let checkboolean = true let check = { 'width': [[540],[0,540]], 'height': [[330],[0,330]] } let f1 = function (num,index,type) { let n = num let i = index let t = type let b = false // console.log(n,i,t) for (let x = 0; x < check[type][i].length; x++) { if (check[type][i][x] === num) { // console.log('>' + check[type][i][x] + '===' + num + '' ) b = true } } return b } for (let i = 0; i < this.picArray.length; i++) { let cb = true for (let x in this.picArray[i]) { let number = this.picArray[i][x] // console.log(x,number) if (x === 'width' && i < 3) { checkboolean = f1(number, 0, 'width') if (!checkboolean) { // console.log('=================',i,x,number,'return false') cb = false break } } else if (x === 'width' && i >= 3) { checkboolean = f1(number, 1, 'width') if (!checkboolean) { // console.log('=================',i,x,number,'return false') cb = false break } } else if (x === 'height' && i < 3) { checkboolean = f1(number, 0, 'height') if (!checkboolean) { // console.log('=================',i,x,number,'return false') cb = false break } } else if (x === 'height' && i >= 3) { checkboolean = f1(number, 1, 'height') if (!checkboolean) { // console.log('=================',i,x,number,'return false') cb = false break } } } if (!cb) { break } } return checkboolean }, // sumbit function ... if(!this.imageCheck()){ this.$message({ message: this.MASSAGE_imagecheck, type: 'error' }); return false } alert('可以传图') ...
$message 是elementUI的组件。
imageCheck 就是检验图片宽高用的方法。返回布尔值,false表示图片宽高不符合要求(或者没有传图)。
其中:
checkboolean 是最终要返回的布尔值。
check 是装载合法宽高值的对象。因为后3张图可传可不传,所以 width 和 height 都是二阶数组。数字是符合要求的值。
f1 是检验某一张图宽高的函数,传入宽高值、下标(第几张)、类型(width height),返回布尔值,false表示图片宽高不符合要求(或者没有传图)。
执行 imageCheck 方法的时候会直接执行循环,如果发现图片不符合要求就跳出并返回 false 给函数外。
里循环中的 x 代表类型,i 代表下标。
使用:在提交时执行 imageCheck 方法即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]