QImage的constBits()函数

2024年3月26日,周二晚上


QImage::constBits() 是 Qt 中 QImage 类的成员函数,用于获取图像数据的指针,但是返回的是一个 const uchar* 类型的指针,表示只读的无符号字符指针。

这个函数通常用于访问图像的像素数据,但是返回的指针是只读的,因此不能通过这个指针来修改图像数据。通常情况下,如果需要修改图像数据,应该使用 QImage::bits() 函数来获取一个可读写的指针。

constBits() 返回的指针指向的是图像数据的首地址,可以通过计算偏移来访问不同位置的像素数据。需要注意的是,图像数据的存储格式可能是按行存储的,因此在访问图像数据时,需要考虑图像的宽度和每行的字节数等信息,以正确地计算偏移量。

总之,constBits() 可以用于获取图像数据的只读指针,方便进行一些只读操作,如像素值的查看或处理,但不能用于修改图像数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个使用QFile和QDataStream类来结合文件映射进行编码bmp图的功能封装成函数的示例: ```cpp #include <QFile> #include <QDataStream> bool encodeBmpFile(const QString& fileName, const QImage& image) { QFile file(fileName); if (!file.open(QIODevice::WriteOnly)) return false; int width = image.width(); int height = image.height(); int bitsPerPixel = image.depth(); int bytesPerLine = (width * bitsPerPixel + 31) / 32 * 4; int dataSize = bytesPerLine * height; int fileSize = dataSize + 54; QByteArray data; data.resize(fileSize); // BMP header data[0] = 'B'; data[1] = 'M'; data[2] = fileSize & 0xff; data[3] = (fileSize >> 8) & 0xff; data[4] = (fileSize >> 16) & 0xff; data[5] = (fileSize >> 24) & 0xff; data[10] = 54; data[14] = 40; data[18] = width & 0xff; data[19] = (width >> 8) & 0xff; data[20] = (width >> 16) & 0xff; data[21] = (width >> 24) & 0xff; data[22] = height & 0xff; data[23] = (height >> 8) & 0xff; data[24] = (height >> 16) & 0xff; data[25] = (height >> 24) & 0xff; data[26] = 1; data[28] = bitsPerPixel; // BMP data uchar* dest = reinterpret_cast<uchar*>(data.data() + 54); const uchar* src = image.constBits(); for (int y = 0; y < height; ++y) { memcpy(dest, src, bytesPerLine); dest += bytesPerLine; src += image.bytesPerLine(); } // Write data to file QDataStream stream(&file); stream.writeRawData(data.constData(), fileSize); return true; } ``` 该函数接受两个参数:要写入的文件名和要编码的图像对象。函数首先打开文件并计算文件大小,然后创建一个字节数组来存储BMP文件头和图像数据。接下来,该函数设置BMP文件头和将图像数据复制到字节数组中。最后,将数据写入文件并返回成功标志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨龙之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值