用户:ColdMao查看:0 回复:1 评论:0 创建时间:2020-08-29T14:57:57
【作品展示】

【作品介绍】
这是一个滤镜作品,使用了PILLOW与tkinter库,有可视化的优点,快来试试吧
【作品源代码】
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
def photos(m):
if m == 1:
img.save('new'+photo)
print('已完成,请关闭窗口,到原图片相同路径查看处理图吧!')
elif m == 2:
print('再来一张吧!(关闭窗口)')
else:
pass
print("欢迎使用笨笨滤镜~")
print('使用前,请先把程序另存为至要处理图片的相同路径上,程序才能正常运行哦')
photo = input('请输入要处理的图片(文件名+文件格式后缀):')
choice = int(input("请输入滤镜:1.反色 2.鲜明 3.鲜暖色 4.鲜冷色 "))
print('请耐心等待......')
img = Image.open(photo)
img_array = img.load()
width, height = img.size
for x in range(width):
for y in range(height):
r = img_array[x, y][0]
g = img_array[x, y][1]
b = img_array[x, y][2]
if choice == 1:
t = '反色'
img_array[x, y] = (255-r, 255-g, 255-b)
elif choice == 2:
t = '鲜明'
if r - g < 50 and r - b < 50:
if r < 200:
r += 20
else:
r = 255
img_array[x, y] = (r, g, b)
else:
if r < 225:
r += 30
else:
r = 255
img_array[x, y] = (r, g, b)
if g - r < 50 and g - b < 50:
if g < 200:
g += 20
else:
g = 255
img_array[x, y] = (r, g, b)
else:
if g < 225:
g += 30
else:
g = 255
img_array[x, y] = (r, g, b)
if b - r < 50 and b - g < 50:
if b < 200:
b += 20
else:
b = 255
img_array[x, y] = (r, g, b)
else:
if b < 225:
b += 30
else:
b = 255
img_array[x, y] = (r, g, b)
elif choice == 3:
t = '鲜暖色'
if img_array[x, y] == (255, 255, 255):
pass
elif r - g < 50 and r - b < 50:
if r < 200:
r += 20
else:
r = 255
if g > 200:
g -= 15
else:
g -= 5
if b > 200:
b -= 20
else:
b -= 10
img_array[x, y] = (r, g, b)
else:
if r < 225:
r += 30
else:
r = 255
if g > 225:
g -= 15
else:
g -= 5
if b > 225:
b -= 20
else:
b -= 10
img_array[x, y] = (r, g, b)
elif choice == 4:
t = '鲜冷色'
if img_array[x, y] == (255, 255, 255):
pass
elif b - g < 50 and b - r < 50:
if b < 200:
b += 20
else:
b = 255
g += 10
r -= 20
img_array[x, y] = (r, g, b)
else:
if b < 225:
b += 30
else:
b = 255
g += 15
r -= 15
img_array[x, y] = (r, g, b)
else:
print('输入错误,请重新输入')
print('处理完成,请打开旁边的窗口查看图片哦')
root.title('笨笨滤镜-' + t)
i = ImageTk.PhotoImage(img)
label_img = Label(root, image=i)
label_img.grid(row = 1,column = 0,columnspan = 3)
a = Button(root, text='保存', command=lambda:photos(1))
a.grid(row=1, column=0)
b = Button(root, text='不保存', command=lambda:photos(2))
b.grid(row=1, column=2)
mainloop()
print('欢迎下次光临~')
print('bye~bye~')
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn