花落丿天使 发表于 2021-3-14 23:00:15

【python绘图】badapple!! 灵梦python实现

本帖最后由 花落丿天使 于 2021-3-14 23:13 编辑

首先放上图片:



代码实现:

import turtle as tt
from PIL import Image
import numpy as np
img=np.array(Image.open('D:/baRM.jpg').convert('L'))
rows,cols=img.shape
III=np.empty(,dtype=int)
for i in range(rows):
    for j in range(cols):
      if (img<=128):
            img=0
      else:
            img=1
def zfx(a,rgb):
    tt.penup()
    tt.left(90)
    tt.fd(a/2)
    tt.left(90)
    tt.pencolor(rgb,rgb,rgb)
    tt.fillcolor(rgb,rgb,rgb)
    tt.begin_fill()
    tt.pendown()
    tt.fd(a/2)
    tt.left(90)
    tt.fd(a)
    tt.left(90)
    tt.fd(a)
    tt.left(90)
    tt.fd(a)
    tt.left(90)
    tt.fd(a/2)
    tt.left(90)
    tt.end_fill()
    tt.penup()
    tt.fd(a/2)
    tt.left(90)

tt.setup(900,900,0,0)
tt.speed(0)
tt.bgcolor("gray")
tt.Turtle().screen.delay(0)
for i in range(1,220,1):
    for j in range(1,220,1):
      tt.penup()
      tt.goto(2*i-300,2*j-300)
      tt.pendown()
      if img==1:
            zfx(2,1)
      else:
            zfx(2,0)

tt.done()


实现原理:
首先引入几个必要的库,PIL和nupmy用来读取像素的RGB值,turtle用来画图(很多人更熟悉的名字应该叫LOGO,就是那只小乌龟),随后定义了绘制正方形的函数zfx(a,rgb),当读取位置为黑色时用zfx(a,0)绘制黑色正方形,反之则绘制白色正方形,为了显示白色正方形的效果,将画布颜色设置成了灰色,随后逐个输出像素点地绘制正方形,然后截图时旋转90度即可(由于开始时乌龟脸朝右的缘故)。中间有一行是D:/baRM.jpg,用的时候记得改成你图片的存储位置,然后下面两个200记得改成你想要的图片大小(如果输出大小和图片不一样还需要乘个系数)
因为下载图片的大小是880*880,于是乎就缩小四倍改成220*220了,按照220*220画的图(也是出于速度的考虑)



Myomyomyomyon 发表于 2021-3-15 00:26:34

LOGO,很有年代感呢
其實是類以Bitmap Threshold的功能吧

不拘一嗝降人才 发表于 2021-3-17 17:59:26

画画(×)
降低分辨率(√)
页: [1]
查看完整版本: 【python绘图】badapple!! 灵梦python实现