Question

How can I write a program using JES to draw “White” gridlines on an image where the horizontal gridlines are separated by 10 pixels and the vertical gridlines are separated by 20 pixels?

Was it helpful?

Solution

Yes, surprisingly, addLine(picture, startX, startY, endX, endY) can only draw black lines !?

So let's do it by hand. Here is a very basic implementation:

def drawGrid(picture, color):

  w = getWidth(picture)
  h = getHeight(picture)

  printNow(str(w) + " x " + str(h))

  w_offset = 20  # Vertical lines offset
  h_offset = 10  # Horizontal lines offset

  # Starting at 1 to avoid drawing on the border
  for y in range(1, h):     
    for x in range(1, w):
      # Here is the trick: we draw only 
      # every offset (% = modulus operator)
      if (x % w_offset == 0) or (y % h_offset == 0):
        px = getPixel(picture, x, y)
        setColor(px, color)


file = pickAFile()
picture = makePicture(file) 
# Change the color here
color = makeColor(255, 255, 255) # This is white
drawGrid(picture, color)
show(picture)

Note : this could also have been achieved a lot more efficiently using the function drawLine(), from the script given here.


Output:


.......enter image description here.........enter image description here.......


Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top