滑块调节透明度程序的问题(已解决)

如本文章标有价格,需议价或其它事情商议请加微信pythonxia

这是需要透明化的图形, 
加上背景,为了衬托半透明效果。

python半透明调节器
python半透明调节器

本问题已经解决,具体请看文章最下面。

"""
  这个程序运行后,能通过滑块调节图形的透明度。
  
  本程序的问题在于,某些像素本来就是透明的,这些像素不需要调节!
  那么调节的时候就会把它变成不透明,所以呈现的效果就像演示的那样。
  本来透明的区域出现了图形,理想的结果就是这些透明像素不需要变化。
  那么如何解决这个问题呢?
"""
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付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » 滑块调节透明度程序的问题(已解决)
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页