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 30.2k 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.
  • D Offline
    D Offline
    DonRico
    wrote on last edited by
    #12

    Sorry, I'm not quite sure how to implement your solution. Also QDeclarativeView isn't used in Qt5 and Pixmap::grapWidget() also depricated.

    But thnx anyways :)

    1 Reply Last reply
    0
    • D Offline
      D Offline
      Djay96
      wrote on last edited by
      #13

      sorry I am using older version (As per requirement ) I appreciate your reply

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

        Hi

        Does anybody have an idea why I can't pass the Image object to the save function. The path comes over nicely but "imageObj" pointer in save() function turns out empty?

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

          Hi

          I also have an empty pointer. I do not know where to look to solve this problem.

          1 Reply Last reply
          0
          • 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