作品展示
背景需求:
刚写完蒙德里安涂色学具,准备开课,转眼班级就“百日咳“”隔离3周,o(╥﹏╥)o
我的AI对话大师只剩1个月的有效期,剩下9万6千次也马上就作废了。
最后一个月可以尽量多用掉一些,我从小红书下载“幼儿益智区小班”的学具,看看那些学具可以用AI对话大师写Python代码。
首先我看到“小红书里的益智区的学具”的一个重要元素——“黑色影子”
也就是将彩色图片变成黑色填充图片。
素材准备:
这些图片的背景都要用PS扣掉的,另存为png
代码展示:
'''
带有alpha的png图片转影子(影子小一半)
作者:AI对话大师,阿夏
时间:2024年5月9日
'''
from PIL import Image
import os
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\图片转影子'
# 原始文件夹路径和目标文件夹路径
original_folder = path + r"\pic"
target_folder = path + r"\out"
# 确保目标文件夹存在
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 获取原始文件夹中所有图片的文件名列表
image_files = [filename for filename in os.listdir(original_folder) if filename.endswith(".png")]
# 遍历每个图片文件
for image_file in image_files:
# 构建原始图片的完整路径
original_image_path = os.path.join(original_folder, image_file)
# 打开原始图片
image = Image.open(original_image_path)
# 创建一个新的图像,与原始图像的大小和模式相同
new_image = Image.new("RGBA", image.size)
# 获取原始图像的像素数据
pixels = image.load()
# 遍历图像的每个像素
for i in range(image.size[0]):
for j in range(image.size[1]):
# 获取当前像素的RGBA值
try:
r, g, b, a = pixels[i, j]
except ValueError:
r, g, b = pixels[i, j]
a = 255
# 判断当前像素的Alpha值
if a == 0:
# 如果Alpha值为0,则保留该像素
new_image.putpixel((i, j), (r, g, b, a))
else:
# 如果Alpha值不为0,则将该像素设置为黑色,不透明度为255
new_image.putpixel((i, j), (0, 0, 0, 255))
# 构建目标图片的完整路径
target_image_path = os.path.join(target_folder, image_file)
# 保存新的图像
new_image.save(target_image_path)
运行结果
代码新建了一个输出文件夹
发现彩色图片是213KB,但是黑白图片只有4,15KB,对比发现小了一圈。
代码:把影子图片变大
'''
带有alpha的png图片转影子(影子一样大)
作者:AI对话大师,阿夏
时间:2024年5月9日
'''
from PIL import Image
import os
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\图片转影子'
# 原始文件夹路径和目标文件夹路径
original_folder = path + r"\pic"
target_folder = path + r"\out"
# 确保目标文件夹存在
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 获取原始文件夹中所有图片的文件名列表
image_files = [filename for filename in os.listdir(original_folder) if filename.endswith(".png")]
# 遍历每个图片文件
for image_file in image_files:
# 构建原始图片的完整路径
original_image_path = os.path.join(original_folder, image_file)
# 打开原始图片
image = Image.open(original_image_path)
# 调整图片大小(增加像素)
new_size = (image.size[0] * 2, image.size[1] * 2) # 原始图片大小乘以2
resized_image = image.resize(new_size)
# 创建一个新的图像,大小是调整后的图片大小
new_image = Image.new("RGBA", new_size)
# 获取调整后的图片的像素数据
pixels = resized_image.load()
# 遍历图像的每个像素
for i in range(resized_image.size[0]):
for j in range(resized_image.size[1]):
# 获取当前像素的RGBA值
try:
r, g, b, a = pixels[i, j]
except ValueError:
r, g, b = pixels[i, j]
a = 255
# 判断当前像素的Alpha值
if a == 0:
# 如果Alpha值为0,则保留该像素
new_image.putpixel((i, j), (r, g, b, a))
else:
# 如果Alpha值不为0,则将该像素设置为黑色,不透明度为255
new_image.putpixel((i, j), (0, 0, 0, 255))
# 构建目标图片的完整路径
target_image_path = os.path.join(target_folder, image_file)
# 保存新的图像
new_image.save(target_image_path)