本问题已经解决,具体请看文章最下面。
"""
这个程序运行后,能通过滑块调节图形的透明度。
本程序的问题在于,某些像素本来就是透明的,这些像素不需要调节!
那么调节的时候就会把它变成不透明,所以呈现的效果就像演示的那样。
本来透明的区域出现了图形,理想的结果就是这些透明像素不需要变化。
那么如何解决这个问题呢?
"""
from tkinter import *
import numpy as np
from PIL import Image,ImageTk
def modify_alpha(event):
global photo # 这个必需要全局变量
a = s1.get() # 获取滑块值
imarray = np.array(rawim) # 从原始图转换成array
imarray[:,:,3] = a # 修改alpha通道的值为a
i = Image.fromarray(imarray) # 从数组中加载为图像
photo = ImageTk.PhotoImage(i) # 形成tkinter能显示的图形对象
cv.itemconfig(pic,image=photo) # 重新配置pic的图形
root = Tk() # 新建根窗口
cv = Canvas(width=640,height=360) # 新建画布
cv.pack() # 放置画布
bgpic = ImageTk.PhotoImage(file='bg.png')# 背景图片,衬托透明
bg = cv.create_image(320,180,image=bgpic)# 创建背景item对象
rawim = Image.open('redturtle.png') # 原始图形
photo = ImageTk.PhotoImage(rawim) # 包装成画布能显示的图形对象
pic = cv.create_image(320,180,image=photo)# 在画布上创建图形
v = StringVar()
s1 = Scale(root,from_=0,to=255,orient=HORIZONTAL,command=modify_alpha,
resolution=1,tickinterval=10,length=600,variable=v)
s1.pack()
root.mainloop()
本人已解决此问题,需要答案关注微信公众号:李兴球Python,回复 alphaquestion 即可获取答案。
或者成为会员,登陆即可得到核心代码:
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

