Почему QCameraImageCapture сохраняет изображение на жесткий диск?

Часть написанного мною приложения позволяет снимать изображения с веб-камеры. Я использую QCamera с QCameraViewfinder для отображения текущего вида, а затем, когда нажимается кнопка спуска затвора, он снимает изображение с QCameraImageCapture, установленным для захвата в буфер, а затем обрабатывает его оттуда. Я только что обнаружил, что он также сохраняет копию изображения в локальной папке изображений. Почему это происходит, и как я могу это остановить?

2 ответа

Это всего лишь моя точка зрения:

На основании документации, после звонка capture независимо от места назначения (я имею в виду CaptureToFile или же CaptureToBuffer) изображение сохраняется в файл.

обратите внимание на этот параметр состояния в приведенной ниже ссылке: если передан пустой файл, серверная часть камеры выбирает местоположение и схему именования фотографий в системе по умолчанию.

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

Дополнительное преимущество с "CaptureToBuffer", ваше изображение сохраняется в некотором указанном формате буфера.

Мое дикое предположение, что если они вообще не поддерживают (так как я не могу найти никакой официальной информации о нем) только захват в буфер, причина может быть,

пользователь может установить формат буфера, используя setBufferFormat, И устройство может не поддерживать формат буфера (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

}

Я считаю, что ошибка, которую вы описываете, была в плагине GStreamer camerabin. Когда вы смотрите на https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/gstreamer/camerabin/camerabinsession.cpp?h=5.15#n587 , m_imageFileName настраивается независимо от места назначения захвата. Файл сохраняется этим фильтром, затем https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp?h=5.15#n404

edit: эта ошибка, похоже, каким-то образом исправлена ​​​​в Qt 5.15.

Другие вопросы по тегам