Qt Gif图片无法显示问题(WINDOWS)

       这几天写QT程序时遇到个问题,本机编译完成的应用程序的Gif正常显示,但移到其他机器上只有png能正常显示,gif和jpg却无法显示.刚开始以为是资源包的关系,然后以为是路径的关系,最后才发现是其实是插件的关系.

       在Qt的目录下有plugins/imageformats这样一个目录,里面有qgif.dll,qjpeg4.dll等动态链接库,当在安装过QT的机器上,这些库能被成功指定调用,所以本机gif能正常显示,当是移到其他没有安装QT的机器时,因为找不到这些库文件,所以导致图片无法显示.

      解决方案如下:

     

     在应用程序目录下建立plugins/imageformats文件夹,将需要的图像支持插件拷贝进去,然后在程序源文件main.cpp 的QApplication a(argc, argv);一行前添加如下代码QApplication::addLibraryPath("./plugins");  最后看起来应该像这样:

 

int main(int argc, char *argv[])
{
 QApplication::addLibraryPath("./plugins");

 QApplication a(argc, argv);

 QtAllTest w;
 w.show();
 return a.exec();
}

 

OK,搞定!!

Qt中处理HTTP上传GIF图片资源并生成动态GIF显示,你可以按照以下步骤操作: 1. **准备环境**: - 首先,确保已经安装了QHttpNetwork模块(Qt 5版本自带)用于网络请求。 - 安装必要的库,比如`libqimageblitz`,它提供了处理图像的功能。 2. **连接到服务器**: 使用`QNetworkAccessManager`发起HTTP POST请求,并设置头信息以指定Content-Type为`multipart/form-data`,因为GIF文件通常作为表单数据上传。 ```cpp QNetworkRequest request; request.setUrl(QUrl("http://example.com/upload")); QByteArray boundary = "boundary" + QByteArray::number(QDateTime::currentMSecsSinceEpoch()); QHttpMultiPart formData("form-data"); // 添加GIF文件部分 QImage gifImage("path_to_your_gif_file.gif"); QByteArray imageData(gifImage.save("data:image/gif;base64,")); // Base64编码 formData.addPart(QHttpPart().setContentType(QStringLiteral("image/gif")).setBody(imageData)); QNetworkReply *reply = manager.post(request, formData); connect(reply, &QNetworkReply::finished, [reply]() { if (reply->error() == QNetworkReply::NoError) { qDebug() << "Upload successful"; } else { qDebug() << "Upload failed: " << reply->errorString(); } }); ``` 3. **接收响应**: 网络请求完成后,检查响应状态码,如果成功则继续下一步。 4. **生成并显示GIF**: 从服务器获取返回的信息,如果包含新生成的GIF地址,可以使用第三方库如`qgif`或者`QtMultimedia`加载并显示动态GIF。 ```cpp if (reply->header("Location").isEmpty()) { qWarning() << "No GIF URL received."; } else { QUrl generatedGifUrl(reply->header("Location").toString()); QImage newGif = QImage::fromData(QUrl(generatedGifUrl).readAll(), "image/gif"); QLabel *gifLabel = new QLabel(this); gifLabel->setPixmap(QPixmap::fromImage(newGif)); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值