时间:2021-05-26
这篇郭先生来说说BufferGeometry,类型化数组和粒子系统的使用,并且让图片有马赛克效果(同理可以让不清晰的图片清晰化),如图所示
1. 解析图片
解析图片和上一篇一样
initCanvas() { canvas = document.createElement('canvas'); content = canvas.getContext('2d'); canvas.width = 1600; canvas.height = 1200; img = new Image(); img.crossOrigin = '*'; img.src = "/static/images/base/girl.jpg"; img.onload = () => { content.drawImage(img, 0, 0, canvas.width, canvas.height); imgDate = content.getImageData(0, 0, canvas.width, canvas.height); this.createPotCloud(); //创建点云 };}2. 操作像素点
createPotCloud() { if (points) { scene.remove(points) } let cw = Math.floor(canvas.width / size); let ch = Math.floor(canvas.height / size); particles = cw * ch; geometry = new THREE.BufferGeometry(); positions = new Float32Array(Math.floor(particles * 3)); positions_af = new Float32Array(Math.floor(particles * 3)); var colors = new Float32Array(Math.floor(particles * 3)); for (var i = 0; i < positions.length; i += 1) { positions[3 * i] = - canvas.width / 2 + (i % cw) * size; positions[3 * i + 1] = canvas.height / 2 + Math.floor((-1 - i) / cw) * size; positions[3 * i + 2] = 0; let selectPos = size * (i % cw) + Math.floor(i / cw) * cw * size * size; colors[3 * i] = imgDate.data[4 * selectPos] / 255.0; colors[3 * i + 1] = imgDate.data[4 * selectPos + 1] / 255.0; colors[3 * i + 2] = imgDate.data[4 * selectPos + 2] / 255.0; } geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3)) geometry.dynamic = true; geometry.attributes.position.needsUpdate = true; var material = new THREE.PointsMaterial({ size: size, vertexColors: THREE.VertexColors }) points = new THREE.Points(geometry, material); points.name = 'points'; scene.add(points); loaded = true;},可以不用纠结代码,核心思想其实我们只需要每隔一定的颜色点取出一个颜色点,然后将这个颜色赋予到geometry的color属性上,就可以了,也可以每隔两行、两列取一个点,但是图片上面的点是一维的,所以需要一些数学方法,
如图所示,原理很简单哦。将不清晰的图片清晰化,就是需要插入更多的像素点,插入的像素点,需要根据已存在的像素点的颜色进行插值,比如原图的像素点1为0xffffff,像素点2的颜色为0xdddddd,则插在两个像素点之间像素点的颜色为0xeeeeee,以此类推。
以上就是three.js 将图片马赛克化的示例代码的详细内容,更多关于three.js 将图片马赛克化的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
打了马赛克的图片不能还原,马赛克效果的使用,可以有效防止图片中的敏感信息被无意泄露所造成的严重后果,由于马赛克的使用原理是对图片的像素进行改变,因此从根本上解决
本文实例为大家分享了OpenCV实现马赛克功能的具体代码,供大家参考,具体内容如下实现用按下鼠标左键拖动时,在鼠标经过的路径上打上马赛克。马赛克的原理是将图像中
打了马赛克的照片是没有办法复原的,因为打了马赛克的照片已经被破坏了原来的图片样式,除非找到原来没有打马赛克之前的照片。 图片是指由图形、图像等构成的平面媒体。
有时我们发照片中有些部分不想要别人看到,我们可以打马赛克,有些网站上传照片中也需要对敏感信息打马赛克,那么怎么给图片打马赛克呢?软件名称:PicPick截图软件
对图片制作马赛克的软件很多,操作方法也不尽相同,在光影魔术手里是如何制作马赛克的呢,今天我们就一起来看看在光影魔术手里是如何制作马赛克的。软件名称:光影魔术手n