html canvas 截图

本文介绍如何使用HTML5 Canvas API从浏览器中的画布截取500x500像素的区域,并将其转换为Base64编码的PNG图像数据,最后存储到数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设上图是通过<canvas id="mycanvas">画在浏览器上的,然后我们要截取中间500x500的一个区域,并将其作为原图的缩略图存储到数据库中。

截取代码:

var canvas_src = document.getElementbyId("mycanvas");

var canvas_dst = document.createElement("canvas");
canvas_dst.width = "500";
canvas_dst.height = "500";
	
var context = canvas_dst.getContext('2d');
var sourceX = canvas_src.width / 2 - 250;
var sourceY = canvas_src.height / 2 - 250;
var sourceWidth = 500;
var sourceHeight = 500;
var destWidth = sourceWidth;
var destHeight = sourceHeight;
var destX = 0;
var destY = 0;

context.drawImage(canvas_src, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);

drawImage就是将源canvas按指定参数裁剪之后生成一个新的canvas,其中第一个参数可以Image对象,canvas画布或视频。

存储代码:

var img = canvas_dst.toDataURL("image/png");
var data = img.substring(img.indexOf(",")+1);
$.post("store_url", {
	data: data
});
canvas.toDataURL(img_type)可以将当前canvas生成Base64编码的图片数据。格式是:

data:image/png;base64,iVBORw0KGgoAAAANSUh...

这部分字符串可以放到img标签中,如<img src="data:image/png;base64,iVB....">。其中逗号前面是说明信息,我们要存储的是后面的图片数据。在python中可以这么做:

import base64
img_cnt = base64.b64decode(data)
这样img_cnt就转换成标准的二进制文件数据了

如果是字段是bytea类型,django中可以直接赋值:

ImageTable.img_field = img_cnt


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值