Canvas中图片镜像翻转怎么操作,有多少方法
Admin 2022-07-01 群英技术资讯 1031 次浏览
关于“Canvas中图片镜像翻转怎么操作,有多少方法”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。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);//左右翻转~~~~
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了DIV+CSS的命名规矩才能有利于SEO优化的实现方法,需要的朋友可以参考下
css中flex-basis的使用:1、flex-basis指定了flex元素在主轴方向上的初始尺寸。2、如果不使用box-sizing来改变盒子模型,则该属性决定了flex元素内容盒的宽度或高度的大小。
css3设置动画匀速的属性单词是哪个animation-timing-function 规定动画的速度曲线。速度曲线定义动画从一套 CSS 样式变为另一套所用的时间。速度曲线用于使变化更为平滑。
这篇文章主要介绍了CSS代码实现三角形和饼图的方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
思维导图又称之为脑图,本篇文章主要介绍了使用css3实现思维导图样式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008