QImage::Format_Mono 为通常所讲的位图模式, QT中本提供了 QBitmap 来作为位图相关的应用, 但其最大弊端在于无法操作图片中 pixel 本身或说相关方法太过繁琐。
Mono 由于 1 bit 存储 1 pixel , 其在内存中即 8 pixel 1 个字节存放(还有 4 字节对齐)。 故存放策略又分 MSB(means the first pixel will be stored in most significant bit of the first byte:高位在前,理解为大端)与LSB(小端)模式。
Format_Mono 默认为大端模式, 可用默认的 pixel() 和 setPixel() 方法直接操作(当然代价庞大)。
1 int getPixel(const QImage img, const int col, const int row) 2 { 3 const uchar uMask = 0x80 >> (col % 8); 4 return img.scanLine(row)[col / 8] & uMask ? 1 : 0; 5 }
上述代码摘自 stackoverflow 上一回复,个人觉得更易于理解 Mono 格式的数据存储方式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步