canvas压缩图片转换成base64格式输出文件流
发布时间 - 2026-01-11 00:05:40 点击率:次昨天研究了一下canvas压缩图片的方法,上传上来给大家分享一下
<!--调用canvas方法--> <canvas id="canvas"></canvas> <!--压缩后的图片路劲--> <img src="" class="preview"> <img src="" class="preview"> <!--原图压缩--> <img class="source" src="" style="display: none;"> <img class="source" src="" style="display: none;">
// drawimage三种调用方法
// ctx.drawImage(Image,dx,dy);
// ctx.drawImage(Image,dx,dy,dWidth,dHeight);
// ctx.drawImage(Image,sx,sy,sWidth,sHeight,dx,dy,dWidth,dHeight);
//images图片元素,出来预判还支持其他三种格式,分别是htmlvideoElement htmlcanvasElement imagebitmap
//todataurl是canvas画布元素的方法,放回指定的图片格式的data url,也就是base64编码串
//todataurl方法最多接受两个参数,并且这两个参数都是可选的:
//type图片格式.支持3种方式,分别是image/jpeg images/png image/webp,默认是image.png
var canvas = document.getElementById('canvas');
var source = document.getElementsByClassName('source');
var preview = document.getElementsByClassName('preview');
canvas.style.display = "none";
window.onload = function() {
//多张图片循环便利压缩
for(var i = 0; i < preview.length; i++) {
var width = source[i].width;
var height = source[i].height;
var context = canvas.getContext('2d');
//sx要绘制到canvas画布的源图片区域(矩形)在x轴上偏移量
var sx = 0;
//sy要绘制到canvas画布的源图片区域(矩形)在y轴上偏移量
var sy = 0;
//swidth要绘制到canvas画布中的源图片区域的宽度,如果没有制定这个值,宽度则是sx到图片最右边的距离
var sWidth = width;
//sHeight要绘制到画布中的源图片区域的宽度,如果没有制定这个值,高度则是sy到图片最下边的距离
var sHeight = height;
//dx源图片左上角在canvas画布上x轴上偏移量
var dx = 0;
//dy源图片左上角在画布y轴上的偏移量
var dy = 0;
//dwidth绘制图片的canvas画布宽度
//dHeight绘制图片的画布高度
var dWidth = width;
var dHeight = height;
var quality = 0.2;
canvas.width = width;
canvas.height = height;
context.drawImage(source[i], sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
var dataUrl = canvas.toDataURL('image/jpeg', quality);
preview[i].src = dataUrl;
}
// console.info(dataUrl);
};
//遍历原图
for(var i = 0; i < source.length; i++) {
source[i].src = 'img/' + (i + 1) + '.jpg';
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# canvas
# base64
# 小程序中canvas的drawImage方法参数使用详解
# 微信小程序canvas.drawImage完全显示图片问题的解决
# JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
# Vue使用canvas实现图片压缩上传
# JS和Canvas实现图片的预览压缩和上传功能
# Js利用Canvas实现图片压缩功能
# Canvas drawImage方法实现图片压缩详解
# 偏移量
# 则是
# 如果没有
# 三种
# 都是
# 最多
# 遍历
# 这两个
# 可选
# 大家分享
# 放回
# 多张
# 昨天
# 上传
# ctx
# Image
# drawImage
# console
# display
# js
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Mybatis 中的insertOrUpdate操作
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Java遍历集合的三种方式
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
如何在宝塔面板中创建新站点?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
如何在阿里云购买域名并搭建网站?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
EditPlus中的正则表达式 实战(4)
海南网站制作公司有哪些,海口网是哪家的?
Laravel如何创建自定义中间件?(Middleware代码示例)
Android滚轮选择时间控件使用详解
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
如何在香港免费服务器上快速搭建网站?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
清除minerd进程的简单方法
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Python面向对象测试方法_mock解析【教程】
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
教你用AI润色文章,让你的文字表达更专业
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
晋江文学城电脑版官网 晋江文学城网页版直接进入
如何快速查询网站的真实建站时间?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
简历没回改:利用AI润色让你的文字更专业
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
如何用花生壳三步快速搭建专属网站?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
什么是javascript作用域_全局和局部作用域有什么区别?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel如何实现多对多模型关联?(Eloquent教程)
中山网站推广排名,中山信息港登录入口?
昵图网官方站入口 昵图网素材图库官网入口
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
如何快速生成高效建站系统源代码?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

