omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular
    1. Home
    2. HT

    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.


    • Profile
    • Following 0
    • Followers 0
    • Topics 7
    • Posts 19
    • Best 0
    • Controversial 0
    • Groups 0

    HT

    @HT

    0
    Reputation
    852
    Profile views
    19
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    HT Unfollow Follow

    Latest posts made by HT

    • RE: Make drawing only possible on top of old path

      @JonB This is the link to my github code, sorry it's very messy:
      https://github.com/HenningTm/drawing_touchpad
      The .xlsx file in the repository contains the point coordinates for the shape and is redrawn in lines 474-489.

      posted in Pythonista
      HT
      HT
    • RE: Make drawing only possible on top of old path

      @JonB Can you give me some pointers how i would use this function? I'm not sure where it would work. This would also mean that I could only color the contour in one color right?

      posted in Pythonista
      HT
      HT
    • RE: Make drawing only possible on top of old path

      I tried something similar with changing the image to a numpy pixel array and the checking the touched pixel and its surroundings. Unfortunately this turned out to not work that great, since it didn't paint all the surrounding pixels, especially when it searched a large area. When I try Image.getpixel I get the error "'module' object has no attribute 'getpixel'.

      Any ideas how else I might accomplish this?

      Here is the code of my attempt with the numpy array:

      def touch_began(self,touch):
              self.x1, self.y1 = touch.location
              x = int(self.x1)
              y = int(self.y1)
              x = x * 2
              y = y * 2
              if pix[y,x] < 255:
                  self.drawDot(touch.location,self.dotSize)
                  self.check_area(touch.location, 15)
              return
      
      def check_area(self, t, size): # Checks area around touch for dark pixels and paints them red
              self.x1, self.y1 = t
              x = int(self.x1)
              y = int(self.y1)
              x = x * 2
              y = y * 2
              ptsx = []
              ptsy = []
              thresh = 120
              for xx in range(size):
                  print('x: '+str(xx))
                  for yy in range(size):
                      print('y: '+str(yy))
                      xn = 0
                      yn = 0
                  if pix[y + yy, x + xx] < thresh:
                      xn = (x + xx) * 0.5
                      yn = (y + yy) * 0.5
                      # print(xn)
                      xn = math.ceil(xn)
                      # print(xn)
                      yn = math.ceil(yn)
                      ptsx.append(xn)
                      ptsy.append(yn)
                  if pix[y - yy, x - xx] < thresh:
                      xn = (x - xx) * 0.5
                      yn = (y - yy) * 0.5
                      xn = math.ceil(xn)
                      yn = math.ceil(yn)
                      ptsx.append(xn)
                      ptsy.append(yn)
                  if pix[y + yy, x - xx] < thresh:
                      xn = (x - xx) * 0.5
                      yn = (y + yy) * 0.5
                      xn = math.ceil(xn)
                      yn = math.ceil(yn)
                      ptsx.append(xn)
                      ptsy.append(yn)
                  if pix[y - yy, x + xx] < thresh:
                      xn = (x + xx) * 0.5
                      yn = (y - yy) * 0.5
                      xn = math.ceil(xn)
                      yn = math.ceil(yn)
                      # self.drawDotCoords(xn,yn,self.dotSize)
                      ptsx.append(xn)
                      ptsy.append(yn)
                      # if xn != 0:
                      #     ptsx.append(xn)
                      #     ptsy.append(yn)
              if len(ptsx) > 0:
                  self.drawDotCoords(ptsx,ptsy,self.dotSize) # Draws a one-pixel dot on each surrounding dark pixel
      
      posted in Pythonista
      HT
      HT
    • Make drawing only possible on top of old path

      Hello!

      In my app, a shape is drawn consisting of many points, which are drawn with a ui.Path, somewhat like this:

      for i in range(1,len(self.points)):
                      x1 = self.points[i].x
                      y1 = self.points[i].y
                      x2 = self.points[i + 1].x
                      y2 = self.points[i + 1].y
                      self.path.move_to(x1, y1)
                      self.path.line_to(x2, y2)
      
      self.set_needs_display()
      

      After this is done I would like to be able to draw on top of that shape with a different color and only on that shape. I basically want to be able to recolor parts of the path.

      I was thinking that using add_clip() could be used on the path that drew the shape, constricting new drawing operations to the shape. Unfortunately I have not been able to make add_clip work.

      Does my approach make sense? If so, where would I use add_clip?

      posted in Pythonista
      HT
      HT
    • RE: Creating touch location variables

      Works perfectly, thanks!

      posted in Pythonista
      HT
      HT
    • Creating touch location variables

      Hello!

      I would like to initialize a variable that functions just like the one you get from touch.location (e.g. you can access the x coordinate with touch.location.x).

      If i initialize the variable like this

      x = [150, 200]

      it will not work with functions that only work with touch.locations.
      How can I create variables like this programmatically?

      posted in Pythonista
      HT
      HT
    • RE: Best method to transfer data to PC

      Unfortunately I don't have access to a sftp server. I've got this part of the code, which sends me a mail. I just can't get it to attach the image to the mail:

      
      image = photos.save_image(img)
      
      to = 'receiver'
                              subject = 'data'
                              gmail_pwd = 'password'
                              gmail_user = 'sender'
                              attachment = self.table
                              print('Connecting...')
                              smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
                              console.show_activity()
                              smtpserver.ehlo()
                              smtpserver.starttls()
      
                          smtpserver.ehlo
                          smtpserver.login(gmail_user, gmail_pwd)
                          # 
                          print('Preparing message...')
                          outer = MIMEMultipart()
                          outer['Subject'] = subject
                          outer['To'] = to
                          outer['From'] = gmail_user
                          outer.preamble = 'You will not see this in a MIME-aware email reader.\n'
                          attachment = get_attachment(image)
                          outer.attach(attachment)
                          composed = outer.as_string()
      
                          print('Sending...')
                          smtpserver.sendmail(gmail_user, to, composed)
                          smtpserver.close()
                          console.hide_activity()
                          print('Done.')
      

      It prints out "Get_attachment is not defined"

      posted in Pythonista
      HT
      HT
    • RE: Undo last line drawn

      You are right, the problem was, that I drew each little line as a path individually. Now that I create one big path and draw it once, it works. Thanks!

      posted in Pythonista
      HT
      HT
    • RE: Undo last line drawn

      The problem I'm having now is that pythonista crashes if the array of points gets too long (I add the touch locations during touch_moved). It happens pretty fast when I'm drawing freely. Unfortunately there is no error message. Has anyone come across this problem?

      posted in Pythonista
      HT
      HT
    • Smoothing out drawn lines

      Hello,

      I would like to know if there is a way to smooth out a drawn line, like shown in this video: https://www.youtube.com/watch?v=Kfy0lWAV16Y

      I know that certain drawing apps do it, is there an easy way to implement it?

      Best wishes.

      posted in Pythonista
      HT
      HT