Dav*_*lla 7 qt c++ application-development qml ubuntu-touch
我正在编写一个 Ubuntu Touch QML 应用程序,用于从相机设备捕获和处理图像。处理由一个 C++ 插件完成,我将图像的 URL 传递给该插件。
我可以成功保存图像并从 C++ 插件加载它们,但我宁愿不必先将图像保存在文件系统上,而是将内存中的相机预览传递给插件。
给定我从相机 ( image://camera/preview_1)获取的预览 URL ,我猜我应该能够获得对"camera" 图像提供者的引用,然后使用requestImage()方法来获取图像。
但是,我一直无法弄清楚如何获得camera图像提供者。这是代码:
QString Decoder::decodeImageQML(const QUrl &imgUrl)
{
/*
* @imgUrl: URL to the camera preview. E.g. image://camera/preview_1
*/
QQmlEngine * engine;
QQuickImageProvider *imageProvider = 0;
// FIXME: this does not work, I'm not sure how to get hold of
// the image provider
imageProvider = engine->imageProvider("camera");
QImage image = imageProvider->requestImage(("preview_1", &size, QSize());
return Decoder::decodeImage(image);
}
Run Code Online (Sandbox Code Playgroud)
如何获得对camera图像提供者的引用?
小智 4
您可以使用以下语法获取有效的引擎实例。
QQmlEngine *engine = QQmlEngine::contextForObject(this)->engine();
Run Code Online (Sandbox Code Playgroud)
要获取图像提供者的指针,您可以执行以下操作,
QQmlImageProviderBase* imageProviderBase = engine->imageProvider(item.host());
QQuickImageProvider* imageProvider = static_cast<QQuickImageProvider*>(imageProviderBase);
Run Code Online (Sandbox Code Playgroud)
由于 QQuickImageProvider 是从 QQmlImageProviderBase 派生的,我认为这个转换是可以的。不知道如何才能从引擎获取 QQuickImageProvider 的指针。
| 归档时间: |
|
| 查看次数: |
5954 次 |
| 最近记录: |