js通过canvas生成图片缩略图
现今大部分的网络应用在上传图片的时候都会同时保存几种尺寸的图片,专业术语也就是生成缩略图,而对于生成缩略图一般做法是通过后端语言php等来生成,但是为了给服务器减压,我们或许可以从前端来着手,先生成好不同尺寸的缩略图,传给后端,而后端只需要将前端传过来的图片进行存储就好了。
使用Canvas我们可以轻松生成各种尺寸的图片,具体实现如下:
functionresizeImage(src,callback,w,h){
varcanvas=document.createElement("canvas"),
ctx=canvas.getContext("2d"),
im=newImage();
w=w||0,
h=h||0;
im.onload=function(){
//为传入缩放尺寸用原尺寸
!w&&(w=this.width);
!h&&(h=this.height);
//以长宽最大值作为最终生成图片的依据
if(w!==this.width||h!==this.height){
varratio;
if(w>h){
ratio=this.width/w;
h=this.height/ratio;
}elseif(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){
varoffset=(w-h)/2;
canvas.width=canvas.height=w;
ctx.drawImage(im,0,offset,w,h);
}elseif(w
在线实例地址:http://demo.jb51.net/js/2020/thumbnail/,图片素材是拿的我们做的一个相框制作应用的截图,有兴趣的朋友可以联系我哦,大家一起讨论,一起玩。
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西