下面是将路径下的图片与QByteArray互相转换的封装函数:
#include <QImage>
#include <QFile>
// 将图片文件加载为 QByteArray
QByteArray loadImageData(const QString& imagePath) {
QFile file(imagePath);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "无法打开图片文件:" << imagePath;
return QByteArray();
}
QByteArray imageData = file.readAll();
file.close();
return imageData;
}
// 将 QByteArray 转换为 QImage
QImage convertToImage(const QByteArray& imageData) {
QImage image;
if (image.loadFromData(imageData)) {
return image;
} else {
qDebug() << "无法加载图片数据";
return QImage();
}
}
// 示例用法:
QString imagePath = "path/to/image.jpg";
// 加载图片并转换为 QByteArray
QByteArray imageData = loadImageData(imagePath);
if (!imageData.isEmpty()) {
// 将 QByteArray 转换为 QImage
QImage image = convertToImage(imageData);
// 使用 image 进行后续操作
// 将 QImage 转换回 QByteArray(可选)
QByteArray convertedImageData;
QBuffer buffer(&convertedImageData);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "JPG"); // 指定保存格式,如 JPG、PNG 等
}
loadImageData()
函数接受一个图片文件的路径作为输入,并返回一个包含了该图片数据的 QByteArray
对象。它通过使用 QFile
类来读取文件内容,并返回读取到的字节数组。
convertToImage()
函数接受一个 QByteArray
对象作为输入,并返回相应的 QImage
对象。它使用 loadFromData()
函数从字节数组中加载图片数据,如果加载成功则返回对应的 QImage
对象。
在示例用法部分,你可以使用上述函数来加载并转换图片数据。如果需要将 QImage
对象转换回 QByteArray
,你可以使用 save()
函数以指定的格式(如 JPG、PNG 等)保存到一个新的字节数组中。
请根据你的具体需求进行适当修改和扩展以上代码。
内容由零声教学AI助手提供,问题来源于学员提问