HTML两张图片翻转,canvas实现图片镜像翻转的2种方式

本文介绍了如何使用HTML和canvas元素实现图片的镜像翻转。第一种方法利用canvas的translate和scale方法进行左右或上下翻转;第二种方法通过遍历和操作ImageData实现像素点的翻转,包括竖向和横向翻转。

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

1. 通过canvas自带的画布方法进行翻转

var img = new image(); //这个就是 img标签的dom对象

img.src = './sy.png';

img.onload = function () {

//图片加载完成后,执行此方法

ctx.drawimage(img, posx, posy, 210, 80);

};

play.addeventlistener('click', function () {

ctx.clearrect(0, 0, canvas.width, canvas.height);//清除画布

//位移来做镜像翻转

ctx.translate(210+ posx * 2, 0);

ctx.scale(-1, 1); //左右镜像翻转

//ctx.translate(0, 160 + posy * 2);

//ctx.scale(1, -1); //上下镜像翻转

ctx.drawimage(img, 0, 0, 210, 80);

});

2.像素点的镜像翻转方法

//竖向像素反转

function imagedatavrevert(sourcedata, newdata) {

for (var i = 0, h = sourcedata.height; i < h; i++) {

for (var j = 0, w = sourcedata.width; j < w; j++) {

newdata.data[i * w * 4 + j * 4 + 0] =

sourcedata.data[(h - i) * w * 4 + j * 4 + 0];

newdata.data[i * w * 4 + j * 4 + 1] =

sourcedata.data[(h - i) * w * 4 + j * 4 + 1];

newdata.data[i * w * 4 + j * 4 + 2] =

sourcedata.data[(h - i) * w * 4 + j * 4 + 2];

newdata.data[i * w * 4 + j * 4 + 3] =

sourcedata.data[(h - i) * w * 4 + j * 4 + 3];

}

}

return newdata;

}

//横向像素反转

function imagedatahrevert(sourcedata, newdata) {

for (var i = 0, h = sourcedata.height; i < h; i++) {

for (j = 0, w = sourcedata.width; j < w; j++) {

newdata.data[i * w * 4 + j * 4 + 0] =

sourcedata.data[i * w * 4 + (w - j) * 4 + 0];

newdata.data[i * w * 4 + j * 4 + 1] =

sourcedata.data[i * w * 4 + (w - j) * 4 + 1];

newdata.data[i * w * 4 + j * 4 + 2] =

sourcedata.data[i * w * 4 + (w - j) * 4 + 2];

newdata.data[i * w * 4 + j * 4 + 3] =

sourcedata.data[i * w * 4 + (w - j) * 4 + 3];

}

}

return newdata;

}

``

var img = new image(); //这个就是 img标签的dom对象

img.src = './sy.png';

img.onload = function () {

//图片加载完成后,执行此方法

ctx.drawimage(img, 0, 0, 210, 80);

};

//像素点操作

var imgdata = ctx.getimagedata(0, 0, 210, 80);

var newimgdata = ctx.getimagedata(0, 0, 210, 80);

// var newimgdata = ctx.getimagedata(0, 0, w, h);

ctx.putimagedata(imagedatavrevert(newimgdata, imgdata), 0, 0); //上下翻转

// ctx.putimagedata(imagedatahrevert(newimgdata, imgdata), 0, 0);//左右翻转~~~~

到此这篇关于canvas实现图片镜像翻转的2种方式的文章就介绍到这了,更多相关canvas图片镜像翻转内容请搜索萬仟网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持萬仟网!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值