将原始位图转换为QT中的png
raw bitmap to png in QT
我有一个字节数组,其中每三个字节描述一个像素(RGB)。任务是将其转换为jpeg或png。我从套接字接收图像调色板,从我拥有的RGB表中构建其相关的RGB24。
我的问题是我现在无法将此位图转换为png。例如:
image.loadFromData((const char*)bytes);
qDebug() << image.save("/home/saman/image.png");
如果不是这样,另一个选项是将png标头添加到位图数组中。然而,我不知道该怎么做。
有人有什么想法吗?
我似乎应该使用构造函数来提及使用的bytesPerLine。
QImage *image =new QImage((const uchar*)bytes.constData(),600, 800,1800,QImage::Format_RGB888);
提到了每行字节数,现在一切都很好。
在这两行中有几个问题:
-
根据官方文档,未指定启动器的保存格式:。
Q图像;QByteArray ba;QBuffer缓冲区(&ba);buffer.open(QIODevice::WriteOnly);image.save(&buffer,"PNG");//以PNG格式将图像写入ba
-
未指定加载的格式。
-
您正在C++代码中执行C类型转换。
-
您正在进行不必要的强制转换,因为存在QByteArray过载。
-
您正在强制转换为char*,而对该特定重载的期望值是unsignedchar*。
-
您不检查加载操作的返回值。
Q图像;QByteArray ba;QBuffer缓冲区(&ba);buffer.open(QIODevice::WriteOnly);image.save(&buffer,"PNG");//以PNG格式将图像写入ba
所以,在你的情况下,我会写这样的东西:
if (!image.loadFromData((const char*)bytes, QImage::Format_RGB888))
qDebug() << "Could not load the image";
if (!image.save("/home/saman/image.png"), "PNG"))
qDebug() << "Could not save the image";
当然,您还需要确保图像的宽度和高度是正确的,因为否则,原始数据只是顺序的,类实例无法真正神奇地计算出来。
相关文章:
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 以在Qt中的IF语句中设置时间延迟
- 如何在QT中的自定义视频小工具t上绘制矩形
- Qt中的实现指针(PIMPL)
- Qt中的RGB图像处理
- 如何识别项目是 QT 中的文件还是文件夹
- 如何将 json 数据附加到 Qt 中的现有 json 文件中
- 通过 Qt 中的线程调用 Rust 库
- Qt中的包装连接方法隐藏了编译器所需的信息
- Qt 中的去抖动事件过滤器
- 在QT中的两个窗口之间共享websocket连接
- 如何使用Qt中的QGeopath清除Mappolyline
- 如何防止GUI挂起,同时允许第二次操作与Qt中的第一次操作一起执行
- 如何从qt中的类中调用方法
- 内联在对always_inline的调用中失败,Qt中的目标特定选项不匹配
- 项目错误:QT中的未知模块:Mac上的图表
- Qt中的QFile::copy(source,dest)的实现有时是错误的吗?
- 是否可以将文件路径传递给Qt中的setStyleSheet()
- 如何使用 qt 中的信号槽控制函数的返回
- 从 Qt 中的信号调用成员函数的问题