如何在QtMultimidia CameraCapture QML Type中使用setMetadata(key,value)方法?

时间:2014-07-11 23:24:08

标签: qt qml qtmultimedia

我有兴趣在QML中将GPS位置元数据设置为捕获的图像。我注意到几个qml捕获元素中的setMetadata(key,value)方法,但我无法理解它是如何工作的,或者找到任何示例。

文档中的定义指出:

  

“将特定元数据键设置为后续图像的值   捕获“。

http://qt-project.org/doc/qt-5/qml-qtmultimedia-cameracapture.html

该方法有效吗?如果是这样,请举一个简单的例子。 如果没有,是否还有其他方法可以在Qt中设置(或编辑)图像元数据(即使需要使用C ++)?

更新(但未解决): 我尝试了以下代码,在桌面上运行的应用程序拍摄照片并保存。在我用预览(MAC)打开它并检查元数据......并没有什么特别的(没有评论键)。

 Camera {
        id: camera
        captureMode: Camera.CaptureStillImage
        Component.onCompleted: {
            imageCapture.setMetadata("Comment","My Picture")
        }

        imageCapture {
            resolution: "640x480"
            onImageCaptured: {
                console.log("Image Captured Callback : Preview : "+preview)
            }
            onImageSaved: {
                console.log("Image Saved Callback : Save Path : "+path)
            }
            onImageMetadataAvailable: {
                console.log("Image Metadata Callback : "+key+" = "+value)
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

我认为您应该在开始捕获之前使用记录here 之前的密钥子集

修改

FWIW,这是Ubuntu的最小测试,Qt 5.3 - 我创建了一个空应用程序,添加了菜单命令,摄像头和查看器

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.0
import QtMultimedia 5.0

ApplicationWindow {
    title: qsTr("Hello World")
    width: 640
    height: 480

    menuBar: MenuBar {
        Menu {
            title: qsTr("File")
            MenuItem {
                text: qsTr("Exit")
                onTriggered: Qt.quit();
            }
            MenuItem {
                text: qsTr("Capture")
                onTriggered: {
                    camA.imageCapture.setMetadata("Description", "my comment")
                    camA.imageCapture.captureToLocation("/home/carlo/Pictures/x.jpg")
                }
            }
        }
    }

    Camera { id : camA }
    VideoOutput { source: camA }
}

结果似乎没问题......

enter image description here