js+canvas实现多图合并为⼀张图⽚var imageArr = [
'./image1.png',
'./image2.png',
'./image3.png',
'./image4.png',
'./image5.png',
'./image6.png'
];
drawImage(imageArr, function (data){
var imgDom = ateElement('img');
imgDom.src = data;
document.body.appendChild(imgDom);
});
/**
* 合并图⽚
* @param images 图⽚路径数组
* @param callback
*/
function drawImage(images, callback) {
if (!images || images.length == 0) {
return false;
}
var option = {
width: 150, // 每个图⽚的宽
height: 150, // 每个图⽚的⾼
cols: 4, // 每⾏⼏张图⽚
encoderOptions: 1 // 拼出来的图⽚的质量,0-1之间,越⼤质量越好
}
var imageCount = images.length; // 图⽚数量
var rows = il(imageCount / ls); // ⾏数
var canvas = ateElement('canvas'); // 创建canvas元素
canvas.width = option.width * ls; // canvas宽度
canvas.height = rows * option.height; // canvas的⾼度
var context = Context('2d'); // 创建渲染
// 设置背景为⽩⾊
context.fillStyle = '#fff';
context.fillRect(0, 0, canvas.width, canvas.height);
// 已绘制的图⽚数(onload和onerror为异步)
var drawCount = 0;
// 遍历图⽚路径数组
images.forEach(function (img, index) {
var imageItem = new Image();
imageItem.src = img;
// 跨域
// 计算图⽚x坐标
var xAxis = parseInt(index % 4) * option.width;
// 计算图⽚y坐标
var yAxis = parseInt(index / 4) * option.height;
// 图⽚加载成功,绘制图⽚
context.drawImage(imageItem, xAxis, yAxis, option.width, option.height);
drawCount++;
if (drawCount === imageCount) {
js合并两个数组// canvas返回base64数据
DataURL('image/jpeg', derOptions));
}
}
// 图⽚加载失败,绘制空⽩
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论