python - 将当前图像转换为黑白
问题描述
目标是将GUI窗口中的当前图像转换为黑白
下面是我的代码:
def BlackAndWhite(self):
from images import Image
LoadAFile = self.inputText.getText()
CurrentImage = open(LoadAFile)
image = self.image = PhotoImage(file = LoadAFile)
image.draw()
BlackAndWhite(image)
image.draw()
self.imageLabel["image"] = self.image
blackPixel = (0,0,0)
whitePixel = (255,255,255)
for y in range(image.getHeight()):
for x in range(image.getWidth()):
(r,g,b) = image.getPixel(x,y)
average = (r+b+g) /3
if average < 128:
image.setPixel(x,y,blackPixel)
else:
image.setPixel(x,y, whitePixel)
我收到此错误消息:
image.draw() AttributeError: 'PhotoImage' object has no attribute 'draw'
解决方案
这是工作代码,您应该可以对其进行调整以配合您的工作:
from tkinter import Tk, Canvas, NW
from PIL import ImageTk, Image
root = Tk()
canvas = Canvas(root, width=1000, height=1000)
canvas.pack()
img = Image.open("PATH_TO_AN_IMAGE")
blackPixel = (0, 0, 0)
whitePixel = (255, 255, 255)
for y in range(img.height):
for x in range(img.width):
pixelVal = img.getpixel((x, y))
# Unpacking in this way in case the pixel contains more than R, G, B (ex: a png)
r, g, b = pixelVal[0:3]
average = (r + b + g) / 3
if average < 128:
img.putpixel((x, y), blackPixel)
else:
img.putpixel((x, y), whitePixel)
photoimage = ImageTk.PhotoImage(img)
canvas.create_image((20, 20), anchor=NW, image=photoimage, state="normal")
root.mainloop()
推荐阅读
- excel - MAX IF over 列不识别值
- javascript - 这个 VSCODE 智能感知是从哪里来的?
- kubernetes - kubernetes,虚拟机可以ping外部服务器,但是虚拟机上部署的pod无法连接外部服务器
- web - 用于网页设计师的多个网站的多个 API 密钥
- excel - 如何根据excel中的另一个列值连接列值?
- c++ - error in extern initialization with C++ compiler
- python - Python - 双 y 轴图表,对齐零
- python - 行之间相对于列字段的总时间差(以毫秒为单位)
- c# - 现有 ASP .Net Webform App - 如何添加专用客户端登录
- javascript - 使用asp.net显示警报消息后重定向到弹出窗口?