WordPress

推荐列表 站点导航

当前位置:首页 > 建站教程 > WordPress >

three.js 将图片马赛克化的示例代码

来源:网络整理  作者:  发布时间:2020-12-18 11:04
这篇文章主要介绍了three.js将图片马赛克化的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋...

positions = new Float32Array(Math.floor(particles * 3));

1. 解析图片

这篇文章主要介绍了three.js 将图片马赛克化的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

positions[3 * i + 2] = 0;

以上就是three.js 将图片马赛克化的示例代码的详细内容,更多关于three.js 将图片马赛克化的资料请关注其它相关文章!

content = canvas.getContext('2d');

img.src = "/static/images/base/girl.jpg";

let cw = Math.floor(canvas.width / size);

particles = cw * ch;

points = new THREE.Points(geometry, material);

canvas.height = 1200;

initCanvas() {

geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3))

colors[3 * i + 1] = imgDate.data[4 * selectPos + 1] / 255.0;

geometry = new THREE.BufferGeometry();

colors[3 * i + 2] = imgDate.data[4 * selectPos + 2] / 255.0;

three.js 将图片马赛克化的示例代码 (https://www.wpmee.com/) javascript教程 第2张

2. 操作像素点

如图所示,原理很简单哦。将不清晰的图片清晰化,就是需要插入更多的像素点,插入的像素点,需要根据已存在的像素点的颜色进行插值,比如原图的像素点1为0xffffff,像素点2的颜色为0xdddddd,则插在两个像素点之间像素点的颜色为0xeeeeee,以此类推。

img.onload = () => {

let selectPos = size * (i % cw) + Math.floor(i / cw) * cw * size * size;

scene.add(points);

这篇郭先生来说说BufferGeometry,类型化数组和粒子系统的使用,并且让图片有马赛克效果(同理可以让不清晰的图片清晰化),如图所示

imgDate = content.getImageData(0, 0, canvas.width, canvas.height);

img.crossOrigin = '*';

canvas = document.createElement('canvas');

可以不用纠结代码,核心思想其实我们只需要每隔一定的颜色点取出一个颜色点,然后将这个颜色赋予到geometry的color属性上,就可以了,也可以每隔两行、两列取一个点,但是图片上面的点是一维的,所以需要一些数学方法,

};

canvas.width = 1600;

createPotCloud() {

scene.remove(points)

geometry.attributes.position.needsUpdate = true;

img = new Image();

解析图片和上一篇一样

var colors = new Float32Array(Math.floor(particles * 3));

three.js 将图片马赛克化的示例代码 (https://www.wpmee.com/) javascript教程 第3张

points.name = 'points';

let ch = Math.floor(canvas.height / size);

loaded = true;

content.drawImage(img, 0, 0, canvas.width, canvas.height);

three.js 将图片马赛克化的示例代码 (https://www.wpmee.com/) javascript教程 第1张

this.createPotCloud();  //创建点云

}

if (points) {

geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));

positions_af = new Float32Array(Math.floor(particles * 3));

}

positions[3 * i + 1] = canvas.height / 2 + Math.floor((-1 - i) / cw) * size;

positions[3 * i] = - canvas.width / 2 + (i % cw) * size;

for (var i = 0; i < positions.length; i += 1) {

},  

geometry.dynamic = true;

var material = new THREE.PointsMaterial({ size: size, vertexColors: THREE.VertexColors })

}  

colors[3 * i] = imgDate.data[4 * selectPos] / 255.0;

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jz/wp/5156.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

three.js 将图片马赛克化的示例代码

2020-12-18 编辑:

positions = new Float32Array(Math.floor(particles * 3));

1. 解析图片

这篇文章主要介绍了three.js 将图片马赛克化的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

positions[3 * i + 2] = 0;

以上就是three.js 将图片马赛克化的示例代码的详细内容,更多关于three.js 将图片马赛克化的资料请关注其它相关文章!

content = canvas.getContext('2d');

img.src = "/static/images/base/girl.jpg";

let cw = Math.floor(canvas.width / size);

particles = cw * ch;

points = new THREE.Points(geometry, material);

canvas.height = 1200;

initCanvas() {

geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3))

colors[3 * i + 1] = imgDate.data[4 * selectPos + 1] / 255.0;

geometry = new THREE.BufferGeometry();

colors[3 * i + 2] = imgDate.data[4 * selectPos + 2] / 255.0;

three.js 将图片马赛克化的示例代码 (https://www.wpmee.com/) javascript教程 第2张

2. 操作像素点

如图所示,原理很简单哦。将不清晰的图片清晰化,就是需要插入更多的像素点,插入的像素点,需要根据已存在的像素点的颜色进行插值,比如原图的像素点1为0xffffff,像素点2的颜色为0xdddddd,则插在两个像素点之间像素点的颜色为0xeeeeee,以此类推。

img.onload = () => {

let selectPos = size * (i % cw) + Math.floor(i / cw) * cw * size * size;

scene.add(points);

这篇郭先生来说说BufferGeometry,类型化数组和粒子系统的使用,并且让图片有马赛克效果(同理可以让不清晰的图片清晰化),如图所示

imgDate = content.getImageData(0, 0, canvas.width, canvas.height);

img.crossOrigin = '*';

canvas = document.createElement('canvas');

可以不用纠结代码,核心思想其实我们只需要每隔一定的颜色点取出一个颜色点,然后将这个颜色赋予到geometry的color属性上,就可以了,也可以每隔两行、两列取一个点,但是图片上面的点是一维的,所以需要一些数学方法,

};

canvas.width = 1600;

createPotCloud() {

scene.remove(points)

geometry.attributes.position.needsUpdate = true;

img = new Image();

解析图片和上一篇一样

var colors = new Float32Array(Math.floor(particles * 3));

three.js 将图片马赛克化的示例代码 (https://www.wpmee.com/) javascript教程 第3张

points.name = 'points';

let ch = Math.floor(canvas.height / size);

loaded = true;

content.drawImage(img, 0, 0, canvas.width, canvas.height);

three.js 将图片马赛克化的示例代码 (https://www.wpmee.com/) javascript教程 第1张

this.createPotCloud();  //创建点云

}

if (points) {

geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));

positions_af = new Float32Array(Math.floor(particles * 3));

}

positions[3 * i + 1] = canvas.height / 2 + Math.floor((-1 - i) / cw) * size;

positions[3 * i] = - canvas.width / 2 + (i % cw) * size;

for (var i = 0; i < positions.length; i += 1) {

},  

geometry.dynamic = true;

var material = new THREE.PointsMaterial({ size: size, vertexColors: THREE.VertexColors })

}  

colors[3 * i] = imgDate.data[4 * selectPos] / 255.0;

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jz/wp/5156.shtml

相关文章

风云图片

推荐阅读

返回WordPress频道首页