图像处理
图像处理是游戏中不可或缺的部分,也是一个比较庞杂的系统。他山之石,可以攻玉,经常看到他人的一些做法和思路,收益颇大,及时总结记录,并且温故而知新。
在这里Silverlight C# 游戏开发:资源的处理,图像算法(二)看到一篇文章。仔细分析学习一下。
首先如我们通常所做的,要取得Image的所有像素值,建立一个WB副本,WriteableBitmap wb = new WriteableBitmap(Image0.Source as BitmapSource);作者使用了这样一个办法,我觉得不错,简单的多。更改WB的时候有两种方法:
(1)Array.Copy()利用数组的这个静态方法
(2)虽然WB的Pixels属性是只读的,但仍然可以单独设置Pixels[i].
接下来的事情就是要分析读取到的像素点,先把它转换成一个字节数组,使用 BitConverter.GetBytes()方法。然后去修改索引为 0,1,2 这三个数值,屏蔽掉任意两个,就会得到不同的通道。
【0】 :Blue 【1】:Green 【2】:Red
另外实验的结果,jpg和Png格式都能得到一样的结果。
如果把三个通道的值设为一样,那么就得到了灰度图。 0.30r+0.59g+0.11b ,需要注意的是,每一个灰度图的权值是不一样的。
如果要取得反相: 255 - 通道
如果要去掉黑色背景:(pixelImg[3] = (byte)((pixelImg[0]+pixelImg[1]+pixelImg[2])/3);
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· MySQL索引完全指南:让你的查询速度飞起来
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
· 我用这13个工具,让开发效率提升了5倍!
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· Coze工作流实战:一键生成鸡汤视频——厉害的人,早已戒掉情绪
· 32岁入行STM32迟吗?
· C++服务开发环境-万事开头难