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 相关文章推荐
js的alert样式如何更改如背景颜色
Jan 22 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
form+iframe解决跨域上传文件的方法
Nov 18 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
理顺8个版本vue的区别(小结)
Sep 17 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
Jul 31 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
JS如何生成随机验证码
Mar 02 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
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下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
分享3个php获取日历的函数
2015/09/25 PHP
eclipse php wamp配置教程
2016/06/30 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
python排序方法实例分析
2015/04/30 Python
Python通过future处理并发问题
2017/10/17 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
高三政治教学反思
2014/02/06 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
pytorch实现手写数字图片识别
2021/05/20 Python
详解python字符串驻留技术
2021/05/21 Python
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers