wpf - WritableBitmap:内存分配不匹配 - 如何解决?
问题描述
在我的程序中,我尝试FormatConvertedBitmap
使用.Indexed4
WritableBitmap
结果图像的尺寸为 20 * 27 像素。
调色板有 16 种颜色,因此每种颜色都有一个半字节,每个字节带有两个像素。
但是,在内存中,WPF 会在每个像素行的末尾添加一个额外的 DWORD:
我无法解决这种不匹配的特定像素。
我需要检查哪些 BitmapSource 属性才能计算此图像的正确步幅?
解决方案
WPF BitmapSource 可以使用它喜欢的任何步幅,前提是它可以保存一行中所有像素的值。特别是,它可以为任何类型的优化内存访问调整步幅。
底层缓冲区的大小是通过将步幅乘以行数来计算的:
WritableBitmap bitmap = ...
var bufferSize = bitmap.BackBufferStride * bitmap.PixelHeight;
推荐阅读
- pycharm - JetBrains IDE - 控制台打印消息中本地文件的可点击链接
- ios - 当细分发生变化时,如何在 Eureka 中更新我的列表?
- python - 为什么我的类不继承其基类中定义的方法?
- r - 如何指定带有 googledrive R 包的文件夹?
- postgresql - r2dbc postgres 驱动程序 - 如何从 PooledConnection 中提取 PostgresqlConnection
- ffmpeg - 如何在 ffmpeg 上使用来自 x265 的 --abr-ladder
- office365 - 可以在 Excel 加载项中创建隐藏的自定义公式
- python - List doesn't appear and elif statement doesn't activate
- mongodb - 为什么在使用 GeoJsonPoint 进行 nearSphere 查询时会出现 CodecConfigurationException?
- dependency-injection - 存在条件注册时如何在 Simple Injector 中交换依赖项以进行集成测试