JS HTML图片显示Canvas 压缩功能
发布时间 - 2026-01-11 02:27:11 点击率:次简单到延伸

最新需要js 文件压缩图片上传 以前没搞过,新手把学习过程分享
一.选择图片并显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<title>Title</title>
</head>
<body>
<input id="imginput" type="file" accept="image/*" onchange="showImg(this)">
<div id="img1">
<canvas class="convas01"></canvas>
</div>
</body>
<script>
window.URL=window.URL||window.webkitURL;
var divimg1 = document.getElementById("img1");
function showImg(obj){
var files = obj.files;
var img = new Image();
img.width = 100;
if(window.URL){
img.src = window.URL.createObjectURL(files[0]);
}else{
//opera不支持createObjectURL/revokeObjectURL方法。需要用FileReader对象来处理
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onload = function(e){
img.src = this.result;
img.width = 200;
img.id="img01";
divimg1.appendChild(img);
}
}
img.id="img01";
divimg1.appendChild(img);
}
</script>
</html>
二.使用canvas代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<title>Title</title>
</head>
<body>
<input id="imginput" type="file" accept="image/*" onchange="showImg(this)">
<div id="img1">
<canvas id="convas01"></canvas>
</div>
</body>
<script>
window.URL=window.URL||window.webkitURL;
var divimg1 = document.getElementById("img1");
var convas = document.getElementById("convas01");
var ht = convas01.getContext("2d");
convas.width = 200;
convas.height = 200;
function showImg(obj){
var files = obj.files;
var img = new Image();
img.width = 200;
if(window.URL){
img.src = window.URL.createObjectURL(files[0]);
img.onload = function(e){
window.URL.revokeObjectURL(this.src);//方便引用无效回收
ht.clearRect(0, 0, convas.width, convas.width);//clearRect() 方法清空给定矩形内的指定像素。
ht.drawImage(img,0,0,convas.width,convas.height);
convas.toDataURL("image/png");
}
}else{
//opera不支持createObjectURL/revokeObjectURL方法。需要用FileReader对象来处理
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onload = function(){
img.src = this.result;
img.width = 200;
img.id="img01";
divimg1.appendChild(img);
}
}
}
</script>
</html>
三.压缩处理
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<title>Title</title>
</head>
<body>
<input id="imginput" type="file" accept="image/*" onchange="showImg(this)">
<div id="img1">
canvas图片
<canvas id="convas01"></canvas>
</div>
<div id="img2">
压缩图片
</div>
</body>
<script>
window.URL=window.URL||window.webkitURL;
var divimg1 = document.getElementById("img1");
var divimg2 = document.getElementById("img2");
var convas = document.getElementById("convas01");
var ht = convas01.getContext("2d");
convas.width = 200;
convas.height = 200;
function showImg(obj){
var files = obj.files;
var img = new Image();
img.width = 200;
if(window.URL){
img.src = window.URL.createObjectURL(files[0]);
img.onload = function(e){
window.URL.revokeObjectURL(this.src);//方便引用无效回收
ht.drawImage(img,0,0,convas01.width,convas01.height);
var imgdata = convas.toDataURL("image/png");
//将canvas转化成Blob对象
var imgobj = new Image();
var blob =dataURLtoBlob(imgdata);
var url = window.URL.createObjectURL(blob);
imgobj.onload = function(e){
window.URL.revokeObjectURL(this.src);
}
imgobj.src= url;
divimg2.appendChild(imgobj);
}
}else{
//opera不支持createObjectURL/revokeObjectURL方法。需要用FileReader对象来处理
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onload = function(){
img.src = this.result;
img.width = 200;
img.id="img01";
divimg1.appendChild(img);
}
}
}
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {type:mime});
}
</script>
</html>
四.分辨率调节尝试
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;padding:0;
}
body{
width:100%;height:100%;background:black;
}
canvas{
width:800px;height:480px;outline:1px solid pink;position:absolute;
left:0;top:0;right:0;bottom:0;margin:auto;
}
</style>
</head>
<body>
<button>240x120</button>
<button>320x240</button>
<button>480x320</button>
<button>640x420</button>
<button>800x480</button>
<canvas id="canvasId" width="480" height="320">
Your browser does not support the canvas element.
</canvas>
<script>
var canvas = document.getElementById('canvasId');
var context = canvas.getContext('2d');
var btns = document.getElementsByTagName('button');
var resolution = [
[240, 120],
[320, 240],
[480, 320],
[640, 420],
[800, 480]
];
//canvas分辨率
var resolutionW = canvas.getAttribute('width');
var resolutionH = canvas.getAttribute('height');
//canvas大小
var sizeW = canvas.offsetWidth;
var sizeH = canvas.offsetHeight;
console.log(resolutionW);
console.log(resolutionH);
console.log(sizeW);
console.log(sizeH);
var img = new Image();
img.src = "http://img5.niutuku.com/phone/1301/0920/0920-niutuku.com-483082.jpg"; //这张图片像素为800x480
img.onload = function() {
draw(3);
for (var i = 0; i < btns.length; i++) {
(function(i) {
btns[i].onclick = function() {
draw(i);
}
})(i);
}
}
function draw(i) {
canvas.setAttribute('width', resolution[i][0]);
canvas.setAttribute('height', resolution[i][1]);
context.clearRect(0, 0, sizeW, sizeH);
context.drawImage(img, 0, 0, sizeW, sizeH, 0, 0, resolution[i][0], resolution[i][1]);
}
</script>
</body>
</html>
总结
以上所述是小编给大家介绍的JS HTML图片显示Canvas 压缩功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# js
# html
# canvas
# js canvas实现5张图片合成一张图片
# js canvas实现二维码和图片合成的海报
# JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
# JS和Canvas实现图片的预览压缩和上传功能
# js HTML5 canvas绘制图片的方法
# js实现canvas图片与img图片的相互转换的示例
# js canvas实现放大镜查看图片功能
# js+html5绘制图片到canvas的方法
# javascript结合canvas实现图片旋转效果
# 使用JavaScript+canvas实现图片裁剪
# js+canvas实现两张图片合并成一张图片的方法
# 不支持
# 需要用
# 小编
# 手把
# 在此
# 这张
# 给大家
# 所述
# 给我留言
# 感谢大家
# 转化成
# 清空
# 图片上传
# 疑问请
# 有任何
# 文件压缩
# Image
# img
# files
# width
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android Socket接口实现即时通讯实例代码
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何在阿里云服务器自主搭建网站?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
如何在建站之星网店版论坛获取技术支持?
如何在Tomcat中配置并部署网站项目?
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
HTML 中动态设置元素 name 属性的正确语法详解
如何快速搭建高效香港服务器网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
JavaScript如何实现错误处理_try...catch如何捕获异常?
如何在新浪SAE免费搭建个人博客?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
如何在建站主机中优化服务器配置?
Laravel如何实现多对多模型关联?(Eloquent教程)
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
如何选择PHP开源工具快速搭建网站?
如何在服务器上配置二级域名建站?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Linux系统命令中tree命令详解
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
活动邀请函制作网站有哪些,活动邀请函文案?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何快速生成专业多端适配建站电话?
如何打造高效商业网站?建站目的决定转化率
如何快速搭建安全的FTP站点?
JavaScript实现Fly Bird小游戏
微信小程序 五星评分(包括半颗星评分)实例代码
中山网站制作网页,中山新生登记系统登记流程?
如何在IIS7上新建站点并设置安全权限?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Swift开发中switch语句值绑定模式
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
免费视频制作网站,更新又快又好的免费电影网站?
如何挑选最适合建站的高性能VPS主机?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
香港网站服务器数量如何影响SEO优化效果?
手机软键盘弹出时影响布局的解决方法
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Laravel如何自定义分页视图?(Pagination示例)
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何撰写建站申请书?关键要点有哪些?
微信小程序 HTTPS报错整理常见问题及解决方案
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议

