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 相关文章推荐
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
iframe子父页面调用js函数示例
Nov 07 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
Jun 12 Javascript
js插件Jcrop自定义截取图片功能
Oct 14 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
Oct 20 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
详谈js的变量提升以及使用方法
Oct 06 Javascript
如何使用three.js 制作一个三维的推箱子游戏
Jul 29 Javascript
node中短信api实现验证码登录的示例代码
Jan 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
session 的生命周期是多长
2006/10/09 PHP
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
python中kmeans聚类实现代码
2018/02/23 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
旷课检讨书2000字
2014/01/14 职场文书
四年级科学教学反思
2014/02/10 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
客服部工作职责范本
2014/02/14 职场文书
课例研修方案
2014/05/31 职场文书
创新社会管理心得体会
2014/09/12 职场文书
地球一小时活动总结
2015/02/27 职场文书
投诉信回复范文
2015/07/03 职场文书
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android
移除Selenium中window.navigator.webdriver值
2022/06/10 Python