为什么QCameraImageCapture将图像保存到硬盘驱动器?

时间:2017-03-30 16:43:00

标签: qt pyqt qcamera

我编写的应用程序的一部分能够从网络摄像头捕获图片。我正在使用QCamera和QCameraViewfinder来显示当前视图,然后当单击一个快门按钮时,它会捕捉一张QCameraImageCapture设置的图片以捕获缓冲区,然后从那里处理它。我刚刚发现它还在本地Pictures文件夹中保存了一个图像副本。为什么会这样,我怎么能阻止它?

1 个答案:

答案 0 :(得分:1)

这只是我的观察点:

根据文档,在您致电capture后,无论目的地位置(我的意思是CaptureToFile还是CaptureToBuffer),图片都会保存到文件中。

请注意以下链接中的状态如果传递空文件,则相机后端会选择系统上照片的默认位置和命名方案。

http://doc.qt.io/qt-5/qcameraimagecapture.html#capture

使用" CaptureToBuffer"的额外优势,您的图像以某种指定的缓冲区格式保存。

我疯狂猜测,如果他们不支持(因为我无法找到任何关于它的官方信息),只能捕获到缓冲区, 原因可能是,

允许用户使用setBufferFormat设置bufferformat。并且设备可能不支持缓冲区格式(isCaptureDestinationSupported()用于检查它。)。可能是因为他们总是保存到本地图片文件夹。

如果capture无法避免此保存,并且您的企业严格需要不维护这些已保存的文件当您的缓冲区运行良好时,可能你可以在下面的插槽中删除它们。

QObject::connect(YOURCAMERACAPTUREOBJECT, SIGNAL(imageSaved), this,SLOT(saved(int id, const QString &fileName)));

void saved(int id, const QString &fileName)
{

//Delete the file by checking you have content in buffer.
//to check the buffer probably you can use "imageAvailable" signal

}