应用

任意图片=>turtle

实现任意图片生成turtle py文件 源码: https://github.com/ikeukenhof/Python-100-Days/blob/yx/practice/turtle 待优化: 按像素点绘制,图片越大,生成的py代码越多

image.png

image2turtle.py

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 图片转为turtle代码
  5. Version : 0.1
  6. Author : yx
  7. Date : 2022-02-11
  8. """
  9. from PIL import Image
  10. f = open('test.py', 'w')
  11. im = Image.open("1.jpg")
  12. x, y = im.size
  13. print(f'{x}px * {y}px')
  14. f.write("import turtle\n\n\n")
  15. f.write("canvasX = {}\n".format(x))
  16. f.write("canvasY = {}\n".format(y))
  17. f.write('''
  18. def D(x, y):
  19. return x - canvasX // 2, - y + canvasY // 2
  20. \n\nturtle.screensize(canvasX,canvasY, "white")
  21. turtle.penup()
  22. turtle.goto(D(0,0))
  23. turtle.pendown()
  24. turtle.pensize(1)
  25. turtle.speed(0)
  26. turtle.colormode(255)
  27. turtle.delay(0)
  28. turtle.tracer({},0)
  29. turtle.hideturtle()
  30. '''.format(x))
  31. for y in range(im.size[1]):
  32. f.write("turtle.penup()\n")
  33. f.write("turtle.goto(D(0,{}))\n".format(y))
  34. f.write("turtle.pendown()\n")
  35. for x in range(im.size[0]):
  36. pix = im.getpixel((x, y))
  37. f.write("turtle.pencolor" + str(pix) + "\n")
  38. f.write("turtle.forward(1)\n")
  39. f.write("turtle.done()\n")

1.jpg生成的代码有3.11MB,执行耗时长,效果尚可
image.pngimage.png