html js 生成缩略图,js通过canvas生成图片缩略图

该博客介绍了如何使用前端Canvas API来生成图片缩略图,以此减少后端处理图片的压力。在上传图片时,前端先根据需要生成不同尺寸的缩略图,然后仅将这些缩略图传给后端进行存储。文章提供了一个具体的JavaScript函数示例,展示了如何调整图片尺寸并保存为PNG格式的数据URL。
摘要由CSDN通过智能技术生成

现今大部分的网络应用在上传图片的时候都会同时保存几种尺寸的图片,专业术语也就是生成缩略图,而对于生成缩略图一般做法是通过后端语言php等来生成,但是为了给服务器减压,我们或许可以从前端来着手,先生成好不同尺寸的缩略图,传给后端,而后端只需要将前端传过来的图片进行存储就好了。

使用Canvas我们可以轻松生成各种尺寸的图片,具体实现如下:

function resizeImage(src,callback,w,h){

var canvas = document.createElement("canvas"),

ctx = canvas.getContext("2d"),

im = new Image();

w = w || 0,

h = h || 0;

im.onload = function(){

//为传入缩放尺寸用原尺寸

!w && (w = this.width);

!h && (h = this.height);

//以长宽最大值作为最终生成图片的依据

if(w !== this.width || h !== this.height){

var ratio;

if(w>h){

ratio = this.width / w;

h = this.height / ratio;

}else if(w===h){

if(this.width>this.height){

ratio = this.width / w;

h = this.height / ratio;

}else{

ratio = this.height / h;

w = this.width / ratio;

}

}else{

ratio = this.height / h;

w = this.width / ratio;

}

}

//以传入的长宽作为最终生成图片的尺寸

if(w>h){

var offset = (w - h) / 2;

canvas.width = canvas.height = w;

ctx.drawImage(im,0,offset,w,h);

}else if(w

var offset = (h - w) / 2;

canvas.width = canvas.height = h;

ctx.drawImage(im,offset,0,w,h);

}else{

canvas.width = canvas.height = h;

ctx.drawImage(im,0,0,w,h);

}

callback(canvas.toDataURL("image/png"));

}

im.src = src;

}

在线实例地址:http://demo.jb51.net/js/2020/thumbnail/,图片素材是拿的我们做的一个相框制作应用的截图,有兴趣的朋友可以联系我哦,大家一起讨论,一起玩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值