Qt在QtWebEngine视图中显示QImage或像素映射(从C++到HTML)
Qt Display QImage or pixel map in QtWebEngine view (from C++ to HTML)
在Qt中,我想显示图像(例如QImage)或从C++到WebEngine的html的任何类型的像素映射。怎么做?
例如,在我的html(由WebEngineView显示)中,有:
<img src="???" id="myImg">
现在我希望能够从C++代码中提供此图像。所以我将生成这个图像(使用一些算法),我想在网络浏览器中显示它。
这也可以使用自定义 UrlSchemeHandler 来完成。
class ImageLoaderUrlSchemeHandler : public QWebEngineUrlSchemeHandler
{
Q_OBJECT
public:
ImageLoaderUrlSchemeHandler(QObject *parent = Q_NULLPTR) : QWebEngineUrlSchemeHandler(parent) { }
void requestStarted(QWebEngineUrlRequestJob *job)
{
QUrlQuery urlq(job->requestUrl());
// use job->requestUrl().host(), job->requestUrl().fileName(), etc.
// and urlq to get info from query
QBuffer *respBuffer = new QBuffer;
image.save(respBuffer, "BMP");
// delete buffer after request completed
connect(respBuffer, &QBuffer::aboutToClose, respBuffer, &QBuffer::deleteLater);
job->reply("image/bmp", respBuffer);
}
};
// install handler for one page
webEngineView->page()->profile()->installUrlSchemeHandler(QByteArray("imldr"), new ImageLoaderUrlSchemeHandler(env));
// or use QWebEngineProfile::defaultProfile() for all pages
<img src="imldr://myapp/myhandler?param1=value1¶m2=value2" id="myImg">
您可以转换为图像数据库64
QByteArray ba;
QBuffer bu(&ba);
image.save(&bu, "PNG");
QString imgBase64 = ba.toBase64(QByteArray::Base64Encoding); // Qt 5.6
<img src="data:image/png;base64,"+imgBase64+"id="myImg">
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- 在C++中搜索嵌套多映射值
- 错误处理.将系统错误代码映射到泛型
- C++匿名结构作为std::映射值
- 如何从存储在std::映射中的std::集中删除元素
- 递归无序映射
- 正在VS调试器中监视映射条目