删除QML Camera的imageCapture中捕获的图像

时间:2016-10-03 09:58:11

标签: qt qml

我正在处理图像处理应用程序,我使用此代码

Camera {
    id: cam
    viewfinder.resolution: "640x480"
    viewfinder.minimumFrameRate: 5
    captureMode: Camera.CaptureStillImage
    imageCapture {
        resolution: "640x480"
        onReadyChanged: {
            imageDecoder.reset()  // my decoder class
            cam.imageCapture.capture()
        }
        onImageCaptured: {
            console.log(requestId, preview)
            imageDecoder.decodeQmlPreview(preview)
        }
    }
    imageProcessing {
        contrast: 0.60
    }
}


VideoOutput {
    id: output
    fillMode: VideoOutput.PreserveAspectCrop
    anchors.fill: parent
    source: cam        
}

我发现所有这些捕获的图像(preview)都存储在硬盘驱动器上,永远不会被删除。如何删除这些图像?我的硬盘空间非常有限。

# ls -lh | grep IMG
-rw-r--r--    1 root     root       10.5K Jan  1 00:40 IMG_00000001.jpg
-rw-r--r--    1 root     root       12.2K Jan  1 00:45 IMG_00000002.jpg
-rw-r--r--    1 root     root       15.6K Jan  1 00:48 IMG_00000003.jpg
-rw-r--r--    1 root     root       15.6K Jan  1 00:49 IMG_00000004.jpg
-rw-r--r--    1 root     root       11.4K Jan  1 01:05 IMG_00000005.jpg

1 个答案:

答案 0 :(得分:1)

QML与FS有一种相当隐含的关系 - 它的内部功能会读取并有时会写入,但它似乎没有一个定义的API供用户直接与FS交互。

这意味着您必须在C ++中实现该功能,并将其公开给QML。

我的做法是创建class System : public QObject并将所有必要的内容放入其中,然后放入main.cpp

  System s(&engine);
  engine.rootContext()->setContextProperty("Sys", &s);

然后从QML中你可以简单地Sys.doYourStuff()。在您的情况下,您需要静态函数bool QFile::remove(const QString &fileName)