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 相关文章推荐
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
jquery实现树形二级菜单实例代码
Nov 20 Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
May 26 Javascript
微信小程序Redux绑定实例详解
Jun 07 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
javaScript产生随机数的用法小结
Apr 21 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
vue实现百度语音合成的实例讲解
Oct 14 Javascript
如何使用Javascript中的this关键字
May 28 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函数解决SQL injection
2006/10/09 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
dedecms中使用php语句指南
2014/11/13 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
python画微信表情符的实例代码
2019/10/09 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
为什么称python为胶水语言
2020/06/16 Python
C#的几个面试问题
2016/05/22 面试题
餐饮业的创业计划书范文
2013/12/26 职场文书
大四学生思想汇报
2014/01/13 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
党支部对转正的意见
2015/06/02 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书