关于 QImage::Format_Mono


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 格式的数据存储方式


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM