图形中存储信息的研究

标签: 无 分类: 未分类 创建时间:2019-12-16 09:27:21 更新时间:2024-11-15 10:49:44

这篇文章写作的来源,其实源于对风场的研究,在风场的相关文档中,我偶然获得了在图片中存储风场信息的技术。

1
2
var vx = (imageArr[(w*y+x)*4+0]-128)/1.6;
var vy = (imageArr[(w*y+x)*4+1]-128)/1.6;

像上面的代码,其实是用图片的r和g分量存储了相应的信息。使用canvas的getImageData方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据,对于 ImageData 对象中的每个像素,都存在着四方面的信息,即 RGBA 值:

R - 红色 (0-255)
G - 绿色 (0-255)
B - 蓝色 (0-255)
A - alpha 通道 (0-255; 0 是透明的,255 是完全可见的)

color/alpha 以数组形式存在,并存储于 ImageData 对象的 data 属性中。以下代码可获得被返回的 ImageData 对象中第一个像素的 color/alpha 信息:

1
2
3
4
red=imgData.data[0];
green=imgData.data[1];
blue=imgData.data[2];
alpha=imgData.data[3];

既然知道了图片数据中可以存储信息,那么如何通过java或者nodejs等方法生成这么一个还有风场向量的信息的图片呢?又让我产生了继续探索的冲动。

大佬的回答总是言简意赅,对于基础知识原理不太清楚的我来说,其实还是有很多路要走,估计又是一个难以跨越的障碍了。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。