2

我有兴趣将 GPS 位置元数据设置为 QML 中捕获的图像。我注意到几个 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)
            }
        }
    }
4

1 回答 1

1

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

编辑

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 }
}

结果似乎还可以...

在此处输入图像描述

于 2014-07-12T09:51:19.677 回答