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.


    canvas.draw_image() function does not work

    Pythonista
    image canvas function
    3
    15
    1331
    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.
    • cvp
      cvp @ccc last edited by cvp

      @ccc said

      You need a "named image"

      What is that? For me, in Ui.Image.named(name), name is a file name

      And the crash does not have any explanation in faultlog, only "abort"????

      1 Reply Last reply Reply Quote 0
      • cvp
        cvp @Trüff last edited by cvp

        @Trüff perhaps a canvas bug, try this (with, of course, your own file name)

        img = ui.Image.named('kitty.JPG')
        clipboard.set_image(img)
        #cv.draw_image("kitty.JPG", 0, 0, img_w, img_h)
        cv.draw_clipboard(0, 0, img_w, img_h)
        
        1 Reply Last reply Reply Quote 0
        • ccc
          ccc last edited by ccc

          https://omz-software.com/pythonista/docs/ios/ui.html#ui.Image.named
          --> cv.draw_image(ui.Image.named("image.png"), 0, 0, img_w, img_h)

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

            @ccc that does not work, draw_image wants a string as first argument

            cv.draw_image(ui.Image.named("kitty.JPG"), 0, 0, img_w, img_h)
            TypeError: argument 1 must be str, not _ui.Image
            
            1 Reply Last reply Reply Quote 1
            • cvp
              cvp @Trüff last edited by

              @Trüff could you tell me if this solves your problem, thanks

              img = ui.Image.named('image.png')
              clipboard.set_image(img)
              cv.draw_clipboard(0, 0, img_w, img_h)
              
              Trüff 1 Reply Last reply Reply Quote 0
              • Trüff
                Trüff @cvp last edited by Trüff

                @cvp Hm… Well, it does draw the image onto the canvas. But the image I want to draw is transparent and apparently it just sets a white background for images that are saved into the clipboard. So when I draw the clipboard with the image inside of it, the picture is not transparent anymore.

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

                  Keep the alpha low on the background color like:

                  • https://forum.omz-software.com/topic/3926/transparent-scene-background-using-objc_utils
                  cvp 1 Reply Last reply Reply Quote 0
                  • Trüff
                    Trüff @ccc last edited by

                    @ccc Ok thank you. I‘m going to read the documentary on these modules first.

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

                      @ccc said

                      Keep the alpha low on the background color

                      If the image he wants to draw is transparent, its background color has already a low alpha.

                      1 Reply Last reply Reply Quote 0
                      • cvp
                        cvp @Trüff last edited by

                        @Trüff I don't know if you really need a canvas, else, please try this

                        import ui
                        v = ui.View()
                        v.background_color = 'yellow'
                        iv = ui.ImageView()
                        iv.background_color = 'red'
                        iv.image = ui.Image.named('image.png')
                        wi,hi = iv.image.size
                        iv.frame = (10,10,150,150*hi/wi)
                        v.add_subview(iv)
                        v.present('fullscreen')
                        

                        Trüff 1 Reply Last reply Reply Quote 0
                        • Trüff
                          Trüff @cvp last edited by

                          @cvp This also doesn‘t work with transparent pictures for me. However, I tried out your previous idea of saving the image into the clipboard and drawing the clipboard but I used the class Image from the PIL module instead of the one from Pythonista‘s ui module and that worked. Thank you!

                          cvp 2 Replies Last reply Reply Quote 0
                          • cvp
                            cvp @Trüff last edited by

                            @Trüff saiD

                            This also doesn‘t work with transparent pictures for me

                            Weird, for me it works, the image of my example has a transparent background, here in red

                            1 Reply Last reply Reply Quote 0
                            • cvp
                              cvp @Trüff last edited by

                              @Trüff said

                              but I used the class Image from the PIL module instead of the one from Pythonista‘s ui module and that worked

                              👍

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