需求:
用户可上传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 方法即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍js获取图片宽高的方法,包括了js获取图片宽高的方法的使用技巧和注意事项,需要的朋友参考一下 本文分享多种js获取图片宽高的方法,并且通过实例进行分析,希望大家从中有所收获。 一、简陋的获取图片方式 结果如下: 宽高都是0的这个结果很正常,因为图片的相关数据都没有被加载前它的宽高默认就是0 于是可以这么优化! 二、onload后在打印 结果如下 通过onload就能获取到图片的宽
问题内容: 我有一个JPS,其中用户可以在其中放置图像: 我写了这个js: 可以很好地检查文件类型和大小。现在,我想检查图像的宽度和高度,但是我不能这样做。 我已经尝试过,但是我得到了。用其他方式我得到。 有什么建议? 问题答案: 该文件只是一个文件,您需要像这样创建一个图像: 我认为您意识到只有少数浏览器支持此功能。到现在为止,大多数都是Firefox和Chrome,也可以成为歌剧。 PSURL
本文向大家介绍使用Vue实现图片上传的三种方式,包括了使用Vue实现图片上传的三种方式的使用技巧和注意事项,需要的朋友参考一下 项目中需要上传图片可谓是经常遇到的需求,本文将介绍 3 种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来。 没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景。假设我们要做一个后台系统添加商品的页面,有一些商品名称、信息等字段
看网上的方法大多是这样的 然后可以在img.load () {} 获取到上传图片的宽高 但是呢更到线上后,上传图片就被拦截了,blob不太行,所以想问一下有不通过blob的方式获取到上传图片的宽高吗,报错信息大致是 有啥解决办法呢,只想获取图片的宽高~~~
本文向大家介绍详解vue 图片上传功能,包括了详解vue 图片上传功能的使用技巧和注意事项,需要的朋友参考一下 这次做了vue页面的图片上传功能,不带裁剪功能的! 首先是html代码,在input框上添加change事件,如下: 我这里做了图片数量的限制,最多6张。 然后是data数据,如下: imgs数组是放图片路径的,页面显示图片就是循环这个数组,imgData是判断图片类型的。 接下来是最重
本文向大家介绍vue图片上传组件使用详解,包括了vue图片上传组件使用详解的使用技巧和注意事项,需要的朋友参考一下 vue图片上传组件,供大家参考,具体内容如下 最近在做项目的时候顺便补充了一下公司项目的公共组件库,刚刚手头事情告一段落,就来做个笔记。 首先来看看最终效果 1.不允许删除 2.允许用户删除(显示删除按钮) 实现的效果就是上图显示内容 接下来说说组件布局那部分直接上代码了 上面代