omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Passing An Image Back To Workflow

    Pythonista
    7
    25
    22003
    Loading More Posts
    • 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.
    • ccc
      ccc last edited by

      @cvp Please check the File Storage (Ubiquity) section of the page:

      You can access documents stored in your iCloud account by using the files property’s dir method

      cvp 1 Reply Last reply Reply Quote 0
      • Phuket2
        Phuket2 @MartinPacker last edited by

        @MartinPacker , I am not really sure about Editorial vrs Pythonista for the graphing, they could be equivalent. But my guess would be that Pythonista would be the superset of functionality.
        But just really wanted to mention the 'Pie Chart Demo.py' in the Examples/Plotting dir in Pythonista. Great demo how to easily create a pie chart with some nice features. It's so easy to understand. Then I am pretty sure if you use a ui.ImageContext to draw into you could return that image for the clipboard. Possibly the matplotlib gives a more direct way. Just interesting

        1 Reply Last reply Reply Quote 1
        • cvp
          cvp @ccc last edited by cvp

          @ccc
          Hi
          I had checked this page but they only support iCloud file storage, that will say Apple apps storage, like Notes, but not iCloud Drive storage of all other apps, what does Workflow app.
          In Workflow, you can save a file to the ICloud Drive of another app, like Documents, FileBrowser, Pages, Numbers etc...

          1 Reply Last reply Reply Quote 0
          • cvp
            cvp last edited by

            @ccc
            It's exactly like you can manually do in Pythonista by

            • edit
            • select a file
            • share
            • add to ICloud Drive

            But automatically

            1 Reply Last reply Reply Quote 0
            • MartinPacker
              MartinPacker last edited by

              All this talk about iCloud illustrates one of the reasons why I'm not looking for a "write to file" solution.

              Clipboard would be fine, though "trashing" the clipboard should only be done if necessary. It seems that it is.

              1 Reply Last reply Reply Quote 0
              • MartinPacker
                MartinPacker last edited by

                Something for y'all to pick the bits out of...

                A reply from @WorkflowHQ on Twitter contained the following...

                "Also regarding sending images, Workflow can decode base64 encoded images."

                Does this help us here? Can we encode images base64?

                1 Reply Last reply Reply Quote 0
                • omz
                  omz last edited by

                  @MartinPacker Encoding images as base64 should be fairly straightforward in Python. Do you have any more details?

                  1 Reply Last reply Reply Quote 0
                  • ccc
                    ccc last edited by

                    https://forum.omz-software.com/topic/2974/need-python-script-to-decode-or-encode-in-base64

                    1 Reply Last reply Reply Quote 0
                    • omz
                      omz last edited by

                      I figured out how to do it without using the clipboard. The trick is basically to use "Get Contents of URL" with a data: URI that gets passed to the workflow via the workflow:// scheme, containing base64-encoded image data.

                      Here's the script:

                      import webbrowser
                      import base64
                      from PIL import Image
                      import io
                      from urllib.parse import quote
                      
                      img = Image.open('test:Lenna')
                      
                      buffer = io.BytesIO()
                      img.save(buffer, 'PNG')
                      data_uri = 'data:image/png;base64,' + base64.b64encode(buffer.getvalue()).decode('ascii')
                      
                      webbrowser.open('workflow://run-workflow?name=EditBase64Image&input=' + quote(data_uri, ''))
                      

                      ...and the workflow should be something like this:

                      Screenshot

                      1 Reply Last reply Reply Quote 0
                      • shtek
                        shtek last edited by

                        invalid base64 encode.
                        remove 'data:image/png;base64,' like this:

                        data_uri  = base64.b64encode(buffer.getvalue()).decode('ascii')
                        

                        now it works
                        sd

                        s

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Powered by NodeBB Forums | Contributors