Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. How to save an image from QML Image element?
Forum Updated to NodeBB v4.3 + New Features

How to save an image from QML Image element?

Scheduled Pinned Locked Moved QML and Qt Quick
27 Posts 12 Posters 29.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jeremy_kJ Offline
    jeremy_kJ Offline
    jeremy_k
    wrote on last edited by
    #16

    For Qt 5 and later, "Canvas":http://qt-project.org/doc/qt-5/qml-qtquick-canvas.html has loadImage(url) and save(filename) functions.

    Asking a question about code? http://eel.is/iso-c++/testcase/

    1 Reply Last reply
    0
    • V Offline
      V Offline
      Vincent007
      wrote on last edited by
      #17

      wait for QQuickRenderControl

      1 Reply Last reply
      0
      • Q Offline
        Q Offline
        qomg
        wrote on last edited by
        #18

        I tried to use the Canvas, and also I could not save.
        I'll try again tomorrow ..

        1 Reply Last reply
        0
        • jeremy_kJ Offline
          jeremy_kJ Offline
          jeremy_k
          wrote on last edited by
          #19

          Image loading and saving via Canvas:

          @import QtQuick 2.2
          import QtQuick.Window 2.1

          Window {
          width: imgLoader.sourceSize.width
          height: imgLoader.sourceSize.height
          visible: true
          property string loadUrl: "file://tmp/image.png"
          property string saveUrl: "/tmp/i2.png"

          Canvas {
              id: root
              anchors.fill: parent
              onPaint: {
                  var ctx = getContext("2d")
                  ctx.drawImage(imgLoader, 0, 0)
              }
          }
          MouseArea {
              anchors.fill: parent
              onClicked: {
                  if (root.save(saveUrl)) {
                      console.log("save succeeded")
                  }
                  else {
                      console.log("save failed")
                  }
              }
          }
          Image {
              id: imgLoader
              visible: false
              source: loadUrl
          }
          

          }@

          Note that the parameter to Canvas::save() is a filename, not a URL. It fails when "file://tmp/i2.png" is used.

          Asking a question about code? http://eel.is/iso-c++/testcase/

          1 Reply Last reply
          0
          • Q Offline
            Q Offline
            qomg
            wrote on last edited by
            #20

            jeremy_k thanks it works great.

            1 Reply Last reply
            0
            • B Offline
              B Offline
              beemaneni
              wrote on last edited by
              #21

              Hi
              does the above code really draw an image in the given path?
              For me the file gets created but nothing in it... i have given save url as "/storage/sdcard0/a1.png".

              Can u help me ?

              Thanks in Advance,,

              Bala B
              Infinite Computer systems
              Chennai

              1 Reply Last reply
              0
              • D Offline
                D Offline
                DonRico
                wrote on last edited by
                #22

                Hi

                I decided to solve this a bit differently. I created a new QML type (c++ class) that takes in image url (local or remote) and spits out local url. In case of beginning http:// or https:// class checks if image is already downloaded from the remote server and in that case spits the local url right out w/o wasting the precious mobile data bandwidth.And then there a QML component that fills out the Image type source property when the local url is returned from my so called "Caching class". If anybody's interest I can strip it out of my project and put it up to github with decent comments.

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  beemaneni
                  wrote on last edited by
                  #23

                  Hi DonRico
                  If u can post that code that would be an great help for me...can u?

                  Thanks

                  Bala B
                  Infinite Computer systems
                  Chennai

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    DonRico
                    wrote on last edited by
                    #24

                    Ok, I'll try to find some spare time to separate it and put it.

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      DonRico
                      wrote on last edited by
                      #25

                      Ok, the exmaple project is available in https://github.com/DonRico/QT-Image-Caching . There might be some issues since I've written QT for 2mos for now but it should give you the general idea.

                      1 Reply Last reply
                      0
                      • jeremy_kJ Offline
                        jeremy_kJ Offline
                        jeremy_k
                        wrote on last edited by
                        #26

                        Caching can also be handled with a "QQuickImageProvider":https://qt-project.org/doc/qt-5/qquickimageprovider.htmlQQuickImageProvider.

                        After defining and register a provider, image urls can be written as "image://ProviderName/path/to/image".

                        The same concept exists for Qt 4 in the form of QDeclarativeImageProvider.

                        Asking a question about code? http://eel.is/iso-c++/testcase/

                        1 Reply Last reply
                        0
                        • C Offline
                          C Offline
                          chuahanmandis
                          Banned
                          wrote on last edited by
                          #27
                          This post is deleted!
                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved