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 相关文章推荐
网页里控制图片大小的相关代码
Jun 25 Javascript
JQUERY复选框CHECKBOX全选,取消全选
Aug 30 Javascript
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
JQuery在页面中添加和除移DOM示例代码
Jun 24 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
页面装载js及性能分析方法介绍
Mar 21 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
仿京东快报向上滚动的实例
Dec 13 Javascript
Vue实例的对象参数options的几个常用选项详解
Nov 08 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
Vue组件生命周期运行原理解析
Nov 25 Vue.js
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制作的意见反馈表源码
2007/03/11 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
再论Javascript的类继承
2011/03/05 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python按比例随机切分数据的实现
2019/07/11 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
python字典的值可以修改吗
2020/06/29 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
小小商店教学反思
2014/04/27 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
干部考核工作总结2015
2015/07/24 职场文书