Проблема
При попытке сохранить холст tkinter с помощью PIL он работает должным образом, если фон холста установлен на «белый» и опция заливки для созданных строк на «черный», но при установке фона холста на «черный» и параметра заливки созданных линий на «белый» сохраненное изображение будет просто сплошным цветом (белым) . Почему это происходит?
Версии
Python 3.11.8
pillow== 10.2.0
Код
обычно сохраняет холст
import tkinter as tk
import io
from PIL import Image
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.line_start = None
self.canvas = tk.Canvas(self, width=300, height=300, bg="white")
self.canvas.bind("", lambda e: self.draw(e.x, e.y))
self.button = tk.Button(self, text="save", command=self.save)
self.canvas.pack(fill="both", expand=True)
self.canvas.focus_set()
self.button.pack(pady=10)
def draw(self, x, y):
if self.line_start:
x_origin, y_origin = self.line_start
self.canvas.create_line(x_origin, y_origin, x, y, fill="black")
self.line_start = x, y
def save(self):
ps = self.canvas.postscript(colormode="color")
img = Image.open(io.BytesIO(ps.encode("utf-8")))
img.save("working.png")
app = App()
app.mainloop()
сохраняет полностью белое изображение
import tkinter as tk
import io
from PIL import Image
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.line_start = None
self.canvas = tk.Canvas(self, width=300, height=300, bg="black")
self.canvas.bind("", lambda e: self.draw(e.x, e.y))
self.button = tk.Button(self, text="save", command=self.save)
self.canvas.pack(fill="both", expand=True)
self.canvas.focus_set()
self.button.pack(pady=10)
def draw(self, x, y):
if self.line_start:
x_origin, y_origin = self.line_start
self.canvas.create_line(x_origin, y_origin, x, y, fill="white")
self.line_start = x, y
def save(self):
ps = self.canvas.postscript(colormode="color")
img = Image.open(io.BytesIO(ps.encode("utf-8")))
img.save("white.png")
app = App()
app.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/783 ... ng-pil-res
Сохранение холста tkinter с черным фоном и белыми линейными объектами с использованием PIL приводит к полностью белому и ⇐ Python
Программы на Python
1727628791
Anonymous
Проблема
При попытке сохранить холст tkinter с помощью PIL он работает должным образом, если фон холста установлен на «белый» и опция заливки для созданных строк на «черный», но при установке фона холста на «черный» и параметра заливки созданных линий на «белый» сохраненное изображение будет просто сплошным цветом (белым) . Почему это происходит?
Версии
Python [b]3.11.8[/b]
pillow== [b]10.2.0[/b]
Код
обычно сохраняет холст
import tkinter as tk
import io
from PIL import Image
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.line_start = None
self.canvas = tk.Canvas(self, width=300, height=300, bg="white")
self.canvas.bind("", lambda e: self.draw(e.x, e.y))
self.button = tk.Button(self, text="save", command=self.save)
self.canvas.pack(fill="both", expand=True)
self.canvas.focus_set()
self.button.pack(pady=10)
def draw(self, x, y):
if self.line_start:
x_origin, y_origin = self.line_start
self.canvas.create_line(x_origin, y_origin, x, y, fill="black")
self.line_start = x, y
def save(self):
ps = self.canvas.postscript(colormode="color")
img = Image.open(io.BytesIO(ps.encode("utf-8")))
img.save("working.png")
app = App()
app.mainloop()
сохраняет полностью белое изображение
import tkinter as tk
import io
from PIL import Image
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.line_start = None
self.canvas = tk.Canvas(self, width=300, height=300, bg="black")
self.canvas.bind("", lambda e: self.draw(e.x, e.y))
self.button = tk.Button(self, text="save", command=self.save)
self.canvas.pack(fill="both", expand=True)
self.canvas.focus_set()
self.button.pack(pady=10)
def draw(self, x, y):
if self.line_start:
x_origin, y_origin = self.line_start
self.canvas.create_line(x_origin, y_origin, x, y, fill="white")
self.line_start = x, y
def save(self):
ps = self.canvas.postscript(colormode="color")
img = Image.open(io.BytesIO(ps.encode("utf-8")))
img.save("white.png")
app = App()
app.mainloop()
Подробнее здесь: [url]https://stackoverflow.com/questions/78396281/saving-tkinter-canvas-with-black-background-and-white-line-objects-using-pil-res[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия