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 相关文章推荐
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
Jun 02 Javascript
浅谈JavaScript 浏览器对象
Jun 03 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
jquery uploadify如何取消已上传成功文件
Feb 08 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 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将向Java靠拢
2006/10/09 PHP
ftp类(myftp.php)
2006/10/09 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
PHP xpath()函数讲解
2019/02/11 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
JsRender实用入门教程
2014/10/31 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
无故旷工检讨书
2014/01/26 职场文书
闭幕式主持词
2014/04/02 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
php png失真的原因及解决办法
2021/10/24 PHP
python如何查找列表中元素的位置
2022/05/30 Python
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers