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 相关文章推荐
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 Javascript
javascript每日必学之继承
Feb 23 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
Node.js中用D3.js的方法示例
Jan 16 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
Jul 24 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
Aug 11 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 empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
vuex的使用步骤
2021/01/06 Vue.js
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
经销商会议欢迎词
2014/01/11 职场文书
个人近期表现材料
2014/02/11 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
开国大典观后感
2015/06/04 职场文书
鲁冰花观后感
2015/06/10 职场文书
工程款催款函
2015/06/24 职场文书
Python3接口性能测试实例代码
2021/06/20 Python