【发布时间】:2012-11-09 19:54:16
【问题描述】:
在 .NET 中,您通常使用 Bitmap 类来存储图像。要快速访问它,您需要调用lock() and unlock() 将位图的内容复制到内存中。那么,是不是说位图在加锁之前没有存储在一个打包的内存数组中呢?
究竟需要锁定什么?即为什么平台不能简单地返回一个指向位图第一个像素的指针并让您直接访问像素? (除了“不安全”的内存访问考虑)
一些可能的原因:
- 位图以原始压缩形式存储以节省内存(PNG、JPEG 等)
- 位图以 24-bpp 格式存储,因此访问速度比 32-bpp 图像慢
- 位图未存储在压缩内存数组中,并且是碎片化的,因此无法快速读取/写入
- 位图以未公开的方式存储,平台不希望您访问实际的位图数据内存 - 强制您使用 lock() 在内存中创建它的副本
【问题讨论】:
标签: .net image performance architecture bitmap