当前位置: 首页 > news >正文

如何做网站frontpage视觉设计包括哪些

如何做网站frontpage,视觉设计包括哪些,网站制作免费,网站开发流程图添加图片注释,不超过 140 字(可选) 这里有两张图片,它们表面看上去是一模一样的,但实际上各自所占用的内存大小相差了180倍。 添加图片注释,不超过 140 字(可选) 添加图片注释&…

添加图片注释,不超过 140 字(可选)

这里有两张图片,它们表面看上去是一模一样的,但实际上各自所占用的内存大小相差了180倍。

添加图片注释,不超过 140 字(可选)


添加图片注释,不超过 140 字(可选)

可以看到右边的图片是22.3MB,而左侧的图片只有127KB,但是实际上这两张图片的大小都是22.3MB。

最近在开发中遇到这样的一个需求,需要把用户上传的图片先进行一次压缩,然后再保存到服务器,这里我们除了优先考虑压缩图片的大小外,还要顾及图片压缩后的清晰度问题。

添加图片注释,不超过 140 字(可选)

经过对比,图片并没有明显的失真情况,下面给大家分享一下,我的解决方法:

这里我采用element的文件上传控件来上传图片

<el-uploadclass="avatar-uploader":action="GLOBAL.serverFileUrl"name="file"drag:show-file-list="false":on-change="beforeAvatarUpload"><i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>

定义了三个事件方法

//图片上传之前处理事件beforeAvatarUpload(file) {console.log(file);const isJpgPng =file.raw.type === "image/jpeg" || file.raw.type === "image/png";if (!isJpgPng ) {this.GLOBAL.messageEvent("error","上传头像图片只能是 JPG/PNG 格式!");} else {this.compressImg(file.raw);}return isJpgPng;},
compressImg(file) {let that = this;// ?通过FormData构造函数创建一个空对象let formData = new FormData();let reader = new FileReader();// ?将读取到的文件编码成DataURLreader.readAsDataURL(file);// ?压缩图片reader.onload = function(ev) {try {// ?读取图片来获得上传图片的宽高let img = new Image();img.src = ev.target.result;img.onload = function(ev) {// ?将图片绘制到canvas画布上进行压缩let canvas = document.createElement("canvas");let context = canvas.getContext("2d");let imgwidth = img.width;let imgHeight = img.height;// ?按比例缩放后图片宽高;let targetwidth = imgwidth;let targetHeight = imgHeight;// ?/如果原图宽大于最大宽度if (targetWidth > targetHeight) {// ?原图宽高比例let scale = targetHeight / 1280;targetHeight = 1280;targetWidth' = targetwidth / scale;} else {// ?原图宽高比例let scale = targetWidth / 1280;targetWidth = 1280;targetHeight = targetHeight / scale;}// ?缩放后高度仍然大于最大高度继续按比例缩小canvas.width = targetwidth; //canvas的宽=图片的宽canvas.height = targetHeight; //canvas的高=图片的高context.clearRect(0,0, canvas.width, canvas.height);context.drawImage(this, 0, 0, canvas.width, canvas.height);let data = "":// ?如果图片小于0.6Mb,不进行压缩,并返回二进制流if (file.size <= 628288) {data = canvas.toDataURL("image/jpeg");formData.append("file", file);that.handleChange(file);}// ?如果图片大于e.6Mb,进行压缩,并返回二进制流else {// todo 压缩文件大小比例data = canvas.toDataURL("image/jpeg",0.4);let paper = that.GLOBAL.dataURLtoFile(data, file.name);formData.append("file", paper);that.handleChange(paper);}};} catch (error) {console.log("出现错误",error);}};},
// todo 调用上传接口 文件提交给后台handleChange(file) (let formData = new FormData( );formData.append("file",file.raw || file);console.log(formData);brandServices.uploadFile(formData).then(res => {if (res.data.errno === 0) {this.imgUrl = res.data.data;this.dialogImageUrl = URL.createObjectURL(file);this.GLOBAL.messageEvent("success",res.data.message);}  else { this.GLOBAL .messageEvent("error",res .data.message);}});}

总结:

先进行图片上传前的验证;接着再对图片实现压缩的操作;最后就可以把文件流提交给后台。

具体的思路是:通过FormData构造函数创建一个空对象,将图片绘制到canvas画布上,然后再进行压缩。用户上传的文件超过一定的大小后就可以执行压缩的操作,当然如果图片太小的话,我们就没必要再压了。建议采用宽高等比例的方式来压缩,不然可能会出现图片变形的情况。

http://www.sczhlp.com/news/121029/

相关文章:

  • 利用代码如何做网站wordpress后台排版全部乱
  • 网站技术支持 新锐网络购门网站建设
  • 网站怎么做域名百度人气榜排名
  • 保山哪里有网站建设湘潭网站建设网站
  • 建设厅网站如何查询企业信息网抖音小程序源码
  • 西宁做网站_君博示范wordpress高亮代码过长
  • 请教个人主页网站怎么做啊移动网站二级域名m开头怎么做
  • 网站加载百度地图网站开发语言有哪些
  • 东莞公司网站搭建多少钱ci框架建设网站
  • synology做网站服务器门户网站的建设费用
  • 中英文双版网站怎么做站长之家seo概况查询
  • python网站开发前端微信登陆入口官网
  • 网站备案域名转公司为wordpress开发app
  • 手机站点cn专门做商标的网站有哪些
  • 服装购物商城网站建设手机免费建立网站
  • 做动物网站的素材免费网站网络推广
  • 青岛网站优化排名查网站备案号
  • 网站设计过程电子商务有限公司是干什么的
  • 做网站图片分辨率多少餐饮网站模板免费下载
  • 哪些网站可以兼职做设计做公司网站的流程
  • 网站留住访客江西建筑培训网
  • 平台网站建设ppt模板下载在线画流程图的网站
  • 百度权重高的网站apache添加网站
  • python做网站缺点哪些网站做面试题
  • 网站建设请示怎么写超便宜的网站
  • 口碑好的定制网站建设公司dw简易网站怎么做
  • 网站文档设置index.php中国建筑师网官网
  • 做暑假工的网站盛成广告传媒做网站的
  • 淮南集团网站建设小型企业网站建设模板
  • 自建网站模板互联网产品经理