Закройте изображение с Gimp Script-Fu - PullRequest
0 голосов
/ 04 февраля 2020

Бесшумное время вопроса. Как закрыть изображение в GIMP с помощью Script-Fu?

Сортировка этой версии Pythoni c: (игнорировать изменения и закрыть)

// close the image WITHOUT saving
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

В * нет ничего 1008 * Процедура браузера для «закрытия»

1 Ответ

0 голосов
/ 05 февраля 2020

(Вы называете & tag "script-fu", это Scheme / Lisp, но затем упоминаете Python ..., так что для Python ...)

Теория такова, что скрипт не должен мешать работе пользовательского интерфейса, поэтому вы не можете случайно закрыть изображение.

Если ваш скрипт загружает изображение, изображение может быть показано пользователю с помощью display=gimp.Display(image) (это gimp.Display объект). Вы также можете добавить отображение к уже загруженному изображению таким же образом. Так как вы создали дисплей, вы знаете его, вы им владеете и поэтому можете закрыть его с помощью gimp.delete(display). Когда последнее отображение изображения закрыто, изображение закрывается.

Если вы не создаете отображение, вы можете воспользоваться тем фактом, что идентификаторы отображения создаются последовательно и эта последовательность сортируется of соответствует идентификаторам изображений, поэтому, если многие изображения были загружены без дисплея или многие изображения имеют go много дисплеев, идентификатор дисплея и идентификатор изображения близки друг к другу.

И, учитывая целочисленный идентификатор, Вы можете восстановить отображение, используя «секрет» gimp._id2display(id), поэтому, если загружено одно изображение, вы можете найти его Дисплей с чем-то вроде

for displayID in range(1,image.ID+50):
    display=gimp._id2display(displayID)
    if isinstance(display,gimp.Display):
        break
if not display:
    raise Exception('Display not found')            
gimp.delete(display)

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

...