Python程序设计 作业

  1. 海龟绘图
  2. 文本处理
  3. 分组游戏设计
  4. 数字照片墙
  5. 送你一首集句诗
  6. 简化的PS


Python程序设计 作业4 数字照片墙

  • Python程序设计 作业
  • 设计思路:
  • 实现方案
  • 关键代码说明
  • 构建文字图层
  • 构建背景图层
  • 构建最终图片
  • 效果展示
  • 心得体会


设计思路:

使用Pillow分别构建同样大小的图片text.jpgwall.jpg,再根据两张图片的相同位置的像素情况构建final.jpg

实现方案

首先将图片统一重命名待用。然后构建text.jpg来存放照片墙的文字图层。之后随机选择照片,调整其大小,按顺序粘贴组成一张大的图片wall.jpg来存放照片墙的背景图层。最后新建一张空的大小一样的图片final.jpg。通过Pillow.getpixel()获取两张图的像素信息,逐个像素进行比较,若text.jpg中的一点像素为大红色,则对final.jpg的同一点使用Pillow.putpixel()赋同一点处wall.jpg的像素信息。

关键代码说明

构建文字图层

text="41802198" # 设置文字图层内容
ft=ImageFont.truetype("shuma.ttf", int(BIG_HEIGHT*1))   # 选择字体和字体大小
text_image=Image.new("RGB", (BIG_WIDTH,BIG_HEIGHT)) # 新建一张空图
draw = ImageDraw.Draw(text_image)
draw.text((0,0), text,font=ft,fill="red")   # 写入字
text_image.save("text.jpg")

构建背景图层

wall_image=Image.new("RGB", (BIG_WIDTH,BIG_HEIGHT)) # 新建空图
# 通过循环粘贴小图片成大图片
for x in range(BIG_WIDTH//SMALL_WIDTH):
    for y in range(BIG_HEIGHT//SMALL_HEIGHT):
        num=random.randint(1,10)    # 随机选图
        tmp=Image.open("photo/"+str(num)+".jpg")
        tmp=tmp.resize((SMALL_WIDTH,SMALL_HEIGHT),Image.NEAREST)    # 调整大小
        wall_image.paste(tmp,(x*SMALL_WIDTH,y*SMALL_HEIGHT))  #粘贴图片   
wall_image.save("wall.jpg")

构建最终图片

wall_image=Image.new("RGB", (BIG_WIDTH,BIG_HEIGHT)) # 新建空图
# 通过循环粘贴小图片成大图片
for x in range(BIG_WIDTH//SMALL_WIDTH):
    for y in range(BIG_HEIGHT//SMALL_HEIGHT):
        num=random.randint(1,10)    # 随机选图
        tmp=Image.open("photo/"+str(num)+".jpg")
        tmp=tmp.resize((SMALL_WIDTH,SMALL_HEIGHT),Image.NEAREST)    # 调整大小
        wall_image.paste(tmp,(x*SMALL_WIDTH,y*SMALL_HEIGHT))  #粘贴图片   
wall_image.save("wall.jpg")

效果展示

python 3D 的照片墙 pygame python制作照片墙_照片墙

心得体会

本次作业考察的主要对图片的操作,难度不大。需要我们对图片各种格式、通道有所了解。其余的无非就是一些简单的判断以及赋值。本次作业完成的方法有很多,每一种都能帮助我们更好地学习图片的相关知识,希望大家都能多尝试几种方法,学习到更多相关知识。