Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9

Преобразовать объект gtk.Image или gtk.gdb.Pixbuf в PIL.Image

07.03.2016, 00:17. Показов 2837. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаем скриншот, дальше требуется его обрезать/перерисовать/еще что нибудь, в gtk.image таких функций не нашел, единственная похожая функция gtk.gdb.Pixbuf.get_pixels_array()возвращ ает список из 108 элементов, которые неизвестно что означают. Все это надо сделать без промежуточного сохранения файла на диск.
Подскажите как это можно сделать?
Python
1
2
3
4
5
6
7
8
9
10
11
12
import gtk
 
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
 
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
 
image = gtk.Image()
image.set_from_pixbuf(pb)
 
print (pb.get_pixels_array())
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2016, 00:17
Ответы с готовыми решениями:

qt5 или gtk
Всем привет. Хочу разработать GUI приложение, и возник вопрос насчёт его стилизации. Насколько я понял, обе популярные GUI библиотеки (gtk3...

Ошибка path should be path-like or io.BytesIO, not <class 'PIL.Image.Image'>
Привет всем! При выполнении скрипта app.exe --directory C:\Users\User\unzip\ Происходит ошибка File...

Ошибка при from PIL import Image
при попытке написать from PIL import Image, pycharm указывает на то, что: Unresolved reference 'PIL', Unresolved reference 'Image' хотя...

11
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.03.2016, 06:48
Для этих целей нужно использовать pillow (pil)
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9
07.03.2016, 08:35  [ТС]
alex925, PIL.Image.Grab не работает под линуксом, отсюда такое шаманство
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.03.2016, 08:42
netfesko, ну ты сделал скриншот не pil, а остальную работу на этот же инструмент зачем пытаться скинуть?
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9
07.03.2016, 08:57  [ТС]
alex925, потому что в пил не работает именно создание скриншотов, все остальное то работает как надо
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.03.2016, 09:36
Цитата Сообщение от netfesko Посмотреть сообщение
потому что в пил не работает именно создание скриншотов, все остальное то работает как надо
Кажется ты меня не понял.
Цитата Сообщение от netfesko Посмотреть сообщение
отому что в пил не работает именно создание скриншотов, все остальное то работает как надо
Так вот по этому не понятно, почему ты "бъешься головой об стену", когда сам знаешь, что есть рабочий инструмент в котором есть необходимые тебе функции.
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9
07.03.2016, 09:57  [ТС]
alex925, видимо не понимаю))
пил не умеет делать скриншоты, но умеет редактировать изображения так как мне надо(обрезать, перегнать в гиф, посчитать количество пикселей определенного цвета)
гтк умеет делать скриншоты, а вот редактировать - вроде как нет(нашел в нем только функцию копирования части изображения по координатам)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.03.2016, 09:59
Цитата Сообщение от netfesko Посмотреть сообщение
пил не умеет делать скриншоты, но умеет редактировать изображения
Цитата Сообщение от netfesko Посмотреть сообщение
гтк умеет делать скриншоты
Ты не находишь логичным то, что нужно просто использовать 2 инструмента? Одним сделал скриншот, другим отредактировал изображение, и все)
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9
07.03.2016, 10:10  [ТС]
alex925, так это я и пытаюсь сделать)) надо преобразовать полученный скриншот(<gtk.gdk.Pixbuf object at 0x7f04eaafe780 (GdkPixbuf at 0x20914c0)> или <gtk.Image object at 0x7f8f65f277d0 (GtkImage at 0x21fa020)>) в формат, понятный пилу
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.03.2016, 11:36
Лучший ответ Сообщение было отмечено netfesko как решение

Решение

Цитата Сообщение от netfesko Посмотреть сообщение
так это я и пытаюсь сделать))
Ты об этом ни слова ни сказал, а надо было с этого начинать
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PIL import Image, ImageDraw, ImageFont
 
from gi.repository import Gdk
 
 
win = Gdk.get_default_root_window()
height = win.get_height()
width = win.get_width()
screenshot = Gdk.pixbuf_get_from_window(win, 0, 0, width, height)
 
image = Image.frombuffer(
    "RGB", (width, height), screenshot.get_pixels(), 'raw', 'RGB', 0, 1
)
 
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("/home/alex/.fonts/Tahoma/tahoma.ttf", 500)
draw.text((0, 0), "Hello", (0, 0, 0), font=font)
 
image.save("scr.png", "png")
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9
07.03.2016, 12:49  [ТС]
alex925, туплю))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.03.2016, 13:02
Ну, а вообще в качестве офтопа, я бы советовал тебе пользоваться pyqt. У нее сообщество больше, она более качественная, в ней все очень логично и ожидаемо называется и установить pyqt на: windows, linux и mac проще простого.

Аналогичное о pygtk я не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2016, 13:02
Помогаю со студенческими работами здесь

Фильтры и маски изображения. PIL Image. Python
Как наложить фото 1 на фото 2 чтобы пространство по центру осталось незаполненным?

qemu- Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/bullet-symbolic.svg
Доброго времени суток! Пытаюсь запустить на qemu(qemu установлена на Windows 10) Ubuntu. 1. Сначала я создал &quot;жёсткий диск&quot;...

Что привычнее для Windows-программиста-GTK+, GTK#, wxWidgets, Qt, Java FX, Swing?
После Visual Basic 6, Delphi что будет привычнее?Что ближе всего к Windows?

GTK Invisible + GTK Preview
Здравствуйте, товарищи программисты! У меня такая проблема. Имеется два виджета GTK Invisible и GTK Preview, но я никак не могу понять,...

При компиляции g++ выдаёт "gtk/gtk.h: No such file or directory"
fatal error: gtk/gtk.h: No such file or directory Как исправить? Что установить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru