Js利用Canvas实现图片压缩功能
发布时间 - 2026-01-11 03:13:38 点击率:次最近做的APP项目涉及到手机拍照上传图片,因为手机拍照的图片通常都比较大,所以上传的时候就会很慢。为此,需要对图片进行压缩处理来优化上传功能。以下是具体实现:
/*
* 图片压缩
* img 原始图片
* width 压缩后的宽度
* height 压缩后的高度
* ratio 压缩比率
*/
function compress(img, width, height, ratio) {
var canvas, ctx, img64;
canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
img64 = canvas.toDataURL("image/jpeg", ratio);
return img64;
}
上面是一个图片压缩函数,返回 base64 格式的图片数据。 其中压缩比率取值(0 - 1 之间)越大图片质量越高。建议不要将图片转为 png 格式,因为转为 png 格式,图片的 base64 比转为 jpeg 的要长不少。下面是实际调用:
var image = new Image();
image.src = "/img/test.jpg";
image.onload = function(){
var img64 = compress(image, 500, 400, 0.7);
document.getElementById("test").src = img64;
}
注意: 压缩方法的调用以及图片src赋值必须放在图片的 onload 方法里面。因为只有等图片加载完成后才能进行压缩处理,从而转换为base64 进行赋值。 如果放在 onload 方法外面,则可能压缩代码无效,或者会生成一张纯黑色的图片。
以上这篇Js利用Canvas实现图片压缩功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# js
# canvas
# 图片压缩
# JS 图片压缩原理与实现方法详解
# JS中图片压缩的方法小结
# js移动端图片压缩上传功能
# JS图片压缩(pc端和移动端都适用)
# JS图片压缩的简单实现
# 放在
# 给大家
# 是一个
# 上传
# 就会
# 手机拍照
# 希望能
# 要将
# 越大
# 这篇
# 涉及到
# 则可
# 越高
# 转换为
# 都比
# 很慢
# 小编
# 上传图片
# 大家多多
# 加载
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何续费美橙建站之星域名及服务?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
C#如何调用原生C++ COM对象详解
Laravel如何为API生成Swagger或OpenAPI文档
Laravel如何使用.env文件管理环境变量?(最佳实践)
轻松掌握MySQL函数中的last_insert_id()
Laravel中的Facade(门面)到底是什么原理
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
JS去除重复并统计数量的实现方法
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Laravel如何配置任务调度?(Cron Job示例)
如何快速搭建高效简练网站?
Python制作简易注册登录系统
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
网站制作免费,什么网站能看正片电影?
晋江文学城电脑版官网 晋江文学城网页版直接进入
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
Laravel storage目录权限问题_Laravel文件写入权限设置
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel怎么清理缓存_Laravel optimize clear命令详解
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Android GridView 滑动条设置一直显示状态(推荐)
Laravel如何使用模型观察者?(Observer代码示例)
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Python文件异常处理策略_健壮性说明【指导】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何处理和验证JSON类型的数据库字段
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel怎么实现验证码(Captcha)功能
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel如何使用Gate和Policy进行授权?(权限控制)
jQuery validate插件功能与用法详解
,在苏州找工作,上哪个网站比较好?
详解jQuery中的事件
BootStrap整体框架之基础布局组件
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
什么是javascript作用域_全局和局部作用域有什么区别?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?

