Михаиллл
16 июля 2019 г. 14:29

В QML не обновляется Image

Добрый день.
Делаю снимки с камеры в один и тот-же файл. Но при попытке загрузки этого файда в Image я получаю первоначальный файл (который был до фотографирования).
Возможно это из-за того, что картинка хранится в кеше.
Скажите пожалуйста, как загружать нынешний файл в Image?

3

Вам это нравится? Поделитесь в социальных сетях!

8
Evgenii Legotckoi
  • 16 июля 2019 г. 14:30

Добрый день. Прикладывайте код.

    Михаиллл
    • 16 июля 2019 г. 14:56

    Пробовал даже этот файл удалять , все равно такой глюк.
    Можно ли из с++ QImage передать в QML в Image?

    1. import QtQuick 2.12
    2. import QtQuick.Controls 2.12
    3. import QtMultimedia 5.12
    4.  
    5. Item {
    6. width: 400
    7. height: 700
    8.  
    9. property alias buttonPhoto: buttonPhoto
    10. property alias photoImage: photoImage
    11. property alias photoPreview: photoPreview
    12. property alias camera: camera
    13.  
    14. Camera {
    15. id: camera
    16.  
    17. imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash
    18.  
    19. exposure {
    20. exposureCompensation: -1.0
    21. exposureMode: Camera.ExposurePortrait
    22. }
    23.  
    24. flash.mode: Camera.FlashRedEyeReduction
    25.  
    26. imageCapture {
    27. id: imageCapture1
    28. onImageCaptured: {
    29. photoPreview.source = preview // Show the preview in an Image
    30. }
    31. onImageSaved: {
    32. photoImage.source = "file:" + appCore.getDirApp() + "/IMG_00000001.jpg"
    33. appCore.closeFile(appCore.getDirApp() + "/IMG_00000001.jpg")
    34. }
    35. }
    36. }
    37.  
    38. VideoOutput {
    39. anchors.bottomMargin: 331
    40. source: camera
    41. anchors.fill: parent
    42. focus : visible // to receive focus and capture key events when visible
    43. autoOrientation: true
    44. }
    45.  
    46. Image {
    47. id: photoPreview
    48. }
    49.  
    50. Image {
    51. id: photoImage
    52. x: 21
    53. y: 433
    54. width: 219
    55. height: 215
    56. fillMode: Image.PreserveAspectFit
    57. source: "qrc:/Images/Images/6.png"
    58.  
    59. }
    60.  
    61. Button {
    62. id: buttonPhoto
    63. x: 264
    64. y: 507
    65. text: qsTr("Photo")
    66. onClicked: {
    67. imageCapture1.capture()
    68. }
    69. }
    70. }
      R
      • 16 июля 2019 г. 15:01

      Image
      cache : bool

      Specifies whether the image should be cached. The default value is true. Setting cache to false is useful when dealing with large images, to make sure that they aren't cached at the expense of small 'ui element' images.

        Михаиллл
        • 16 июля 2019 г. 15:32

        Сделал так, но беда осталась:

        1. Image {
        2. id: photoImage
        3. x: 21
        4. y: 433
        5. width: 219
        6. height: 215
        7. fillMode: Image.PreserveAspectFit
        8. cache: false
        9. source: "qrc:/Images/Images/6.png"
        10.  
        11. }
          R
          • 16 июля 2019 г. 15:39

          а так є вивід при оновленні картинки?

          1. onSourceChanged: {
          2. console.log("test set new source")
          3. }
            Михаиллл
            • 16 июля 2019 г. 16:05
            1. console.log("cache" + photoImage.cache)

            возвращает "cachefalse".
            Можно ли из с++ QImage передать в QML в Image?

              Михаиллл
              • 16 июля 2019 г. 16:22
              • Ответ был помечен как решение.

              Вот так перевожу QImage в QByteArray

              1. QString AppCore::getImage(QString addressFile)
              2. {
              3. QImage myImage(addressFile);
              4.  
              5. QByteArray bArray;
              6. QBuffer buffer(&bArray);
              7. buffer.open(QIODevice::WriteOnly);
              8. myImage.save(&buffer, "JPEG");
              9.  
              10. QString image("data:image/jpg;base64,");
              11. image.append(QString::fromLatin1(bArray.toBase64().data()));
              12.  
              13. return image;
              14. }

              Скажите пожалуйста , как теперь в QML задать QByteArray как картинку

                Михаиллл
                • 16 июля 2019 г. 16:26

                Вот так работает

                1. photoImage.source = appCore.getImage(appCore.getDirApp() + "/IMG_00000001.jpg")

                  Комментарии

                  Только авторизованные пользователи могут публиковать комментарии.
                  Пожалуйста, авторизуйтесь или зарегистрируйтесь