JS实现按比例缩小图片宽高


Posted in Javascript onAugust 24, 2020

本文实例为大家分享了JS实现按比例缩小图片宽高的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
 <title>JS 按比例缩小图片宽高</title>
</head>
 
<body>
 <div>
 <input type="file" name="" id="upload">
 <img src="" alt="" id="preview">
 </div>
</body>
<script>
 var upd =document.getElementById('upload');
 upd.addEventListener('change',function(e){
 var file=e.target.files[0]; 
 var reader=new FileReader();
 var img = document.createElement('img');
 var canvas=document.createElement('canvas');
 var context=canvas.getContext('2d'); 
 
 reader.onload=function(e){ 
 img.src = e.target.result;
 img.onload = function () {
 var imgWidth=this.width;//上传图片的宽
 var imgHeight = this.height;//上传图片的高 
 //按比例缩放后图片宽高 
 var targetWidth = imgWidth;
 var targetHeight = imgHeight; 
 var maxWidth=1920;//图片最大宽
 var maxHeight = 1080;//图片最大高 
 var scale = imgWidth / imgHeight;//原图宽高比例
 
 //如果原图宽大于最大宽度
 if(imgWidth>maxWidth){
 targetWidth = maxWidth;
 targetHeight = targetWidth/scale;
 }
 //缩放后高度仍然大于最大高度继续按比例缩小
 if(targetHeight>maxHeight){
 targetHeight = maxHeight
 targetWidth = targetHeight*scale;
 }
 canvas.width=targetWidth;//canvas的宽=图片的宽
 canvas.height=targetHeight;//canvas的高=图片的高
 
 context.clearRect(0,0,targetWidth,targetHeight)//清理canvas
 context.drawImage(img,0,0,targetWidth,targetHeight)//canvas绘图
 var newUrl=canvas.toDataURL('image',0.92);//canvas导出成为base64
 preview.src=newUrl
 }
 }
 reader.readAsDataURL(file);
 })
</script>
 
</html>

小编再为大家分享一段:图片按宽高比例进行自动缩放代码

/**
 * 图片按宽高比例进行自动缩放
 * @param ImgObj
 * 缩放图片源对象
 * @param maxWidth
 * 允许缩放的最大宽度
 * @param maxHeight
 * 允许缩放的最大高度
 * @usage 
 * 调用:<img src="图片" onload="javascript:DrawImage(this,100,100)">
 */
function DrawImage(ImgObj, maxWidth, maxHeight){
 var image = new Image();
 //原图片原始地址(用于获取原图片的真实宽高,当<img>标签指定了宽、高时不受影响)
 image.src = ImgObj.src;
 // 用于设定图片的宽度和高度
 var tempWidth;
 var tempHeight;
 
 if(image.width > 0 && image.height > 0){
 //原图片宽高比例 大于 指定的宽高比例,这就说明了原图片的宽度必然 > 高度
 if (image.width/image.height >= maxWidth/maxHeight) {
  if (image.width > maxWidth) {
  tempWidth = maxWidth;
  // 按原图片的比例进行缩放
  tempHeight = (image.height * maxWidth) / image.width;
  } else {
  // 按原图片的大小进行缩放
  tempWidth = image.width;
  tempHeight = image.height;
  }
 } else {// 原图片的高度必然 > 宽度
  if (image.height > maxHeight) { 
  tempHeight = maxHeight;
  // 按原图片的比例进行缩放
  tempWidth = (image.width * maxHeight) / image.height; 
  } else {
  // 按原图片的大小进行缩放
  tempWidth = image.width;
  tempHeight = image.height;
  }
 }
 // 设置页面图片的宽和高
 ImgObj.height = tempHeight;
 ImgObj.width = tempWidth;
 // 提示图片的原来大小
 ImgObj.alt = image.width + "×" + image.height;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。 

Javascript 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
利用vue-router实现二级菜单内容转换
Nov 30 Javascript
Angular2搜索和重置按钮过场动画
May 24 Javascript
vue高德地图之玩转周边
Jun 16 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
Angular简单验证功能示例
Dec 22 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
JS实现简易贪吃蛇游戏
Aug 24 #Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
Aug 24 #Javascript
Node.js 中判断一个文件是否存在
Aug 24 #Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 #Javascript
在Vue中使用HOC模式的实现
Aug 23 #Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 #Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 #Javascript
You might like
PHP异步调用socket实现代码
2012/01/12 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
php获取excel文件数据
2017/04/21 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
js实现随机点名
2021/01/19 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python实现简单购物商城
2016/05/21 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
教育专业个人求职信
2013/12/02 职场文书
自荐信范文
2013/12/10 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
课程设计的心得体会
2014/09/03 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
办公室管理规章制度
2015/08/04 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
七年级生物教学反思
2016/02/20 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript