Gtk + 3 Gdk Pixbuf.new_from_data дает ошибку «Ошибка сегментации (сбрасывание ядра)» 139

В моем приложении у меня есть GtkImage, который должен отображать обработанное изображение из выбранного файла. Итак, в разделе обработчиков я:

import numpy as np from PIL import Image , ImageDraw from gi.repository import Gtk, GdkPixbuf . . . . . . def on_fitchooserdialog_response(self, menuitem, data=None): if data == 1: self.fitlist = self.fitchooser.get_filenames() # get data from 1st file: _, self.data = Getdata(self.fitlist[0]) # convert from Fits to 2D array: pngarray = Fit2png(self.data) # rescale: size = tuple(x/2 for x in pngarray.shape) im = Image.fromarray(pngarray) im.thumbnail((size[1],size[0]), Image.BICUBIC) 

До сих пор все в порядке. Если мы это сделаем:

  im.save("../tmp/tmp.png") pixbuf = GdkPixbuf.Pixbuf.new_from_file('../tmp/tmp.png') self.imagen.set_property("pixbuf", pixbuf) 

ожидаемое изображение вставляется в виджет GtkImage. Но это уродливый способ, не так ли?

Так что я пытаюсь:

 im = im.convert("RGB") arr = np.array(im).flatten() pixbuf = GdkPixbuf.Pixbuf.new_from_data(arr, GdkPixbuf.Colorspace.RGB, False, 8, size[1], size[0], 3*size[1]) 

Но результатом является «Ошибка 139, ошибка сегментации (сбрасывание ядра)»

Что мне не хватает?

One Solution collect form web for “Gtk + 3 Gdk Pixbuf.new_from_data дает ошибку «Ошибка сегментации (сбрасывание ядра)» 139”

Это, похоже, связано с этой ошибкой gdk: https://bugzilla.gnome.org/show_bug.cgi?id=721497

В основном это использование после бесплатной ошибки в оболочке python gdk, которая может привести к искажениям изображения и / или segfaults, как это было для вас. См. https://stackoverflow.com/a/24070152/3528174

Вы можете найти пример таких искажений изображения в этом вопросе: как правильно скрывать 3d-массив в конгруэнтные байты rgb

  • Воспроизведение видео в Gtk в окне с меню
  • Как создать PixBuf из файла с помощью Gdk3?
  • Как обрабатывать клики по ссылкам в Python с Gtk 3.0 и WebKit2 4.0?
  • PyGObject GTK + 3 - Документация?
  • Как развернуть (размыть) окно Python-gi GTK + 3 на Linux
  • Оболочка GTK Label в диалоговом окне
  • Установите цвет фона наведения в меню Gtk3 MenuItem
  • Проблемы с Python spynner и gtk3
  • Python - лучший язык программирования в мире.