4.751111111111Rating 4.75 (4 Votes)

Суть вопроса следующая - есть Gimp в который в больших количествах из буфера обмена попадают изображения, все ничего, но если Gimp в какой-то момент закроется, неважно по каким причинам, то открытые файлы не сохраняются, что вызывает порой достаточную печаль :)

Главным решением данного вопроса является функция автосохранения, которую можно добавить в Gimp путем python скрипта, выступающим в качестве плагина.

Скрипт автосохранения Gimp

На эту тему есть готовый скрипт, раземещенный на GitHub - gimp-autosave.py, ниже приведу его код:

#!/usr/bin/env python

# Original (by yahvuu): http://www.gimpusers.com/forums/gimp-developer/11718-autosave-plugin
import tempfile, os
from time import *
from gimpfu import *

def autosave(image, layer):

	backupInterval = 10 * 60
	backupFiles = {}

	print "Autosave activated"

	while 1:
		sleep(backupInterval)

		print ctime(time())

		curImages = {}
		for k in gimp.image_list():
			curImages[k.ID] = k

			curIDs = curImages.keys()
			oldIDs = backupFiles.keys()

			newIDs = [x for x in curIDs if x not in oldIDs]; delIDs = [x for x in oldIDs if x not in curIDs];

		# create (empty) backup files for new images
		for id in newIDs:
			prefix = 'gimpbackup-ID' + str(id) + '-'
			fn = tempfile.mkstemp(prefix = prefix, suffix = '.xcf')
			os.close(fn[0])
			backupFiles[id] = fn[1]

		# remove closed images' backups 
		for id in delIDs:
			filename = backupFiles[id]
			del(backupFiles[id])

			try:
				os.remove(filename)
			except:
				print "ERROR: ", sys.exc_info()[0]

		# backup images 
		for id, filename in backupFiles.iteritems():
			img = curImages[id]

			try:
				print "saving " + img.name + '-' + str(id) + ' to ' + filename
				pdb.gimp_xcf_save(1, img, img.active_drawable, filename, filename)
			except:
				print "ERROR: ", sys.exc_info()[0]

register(
	"autosave",
	"Autosave dirty hack",
	"Periodically saves all opened images to a %temp% directory",
	"public domain",
	"public domain",
	"2016",
	"/File/Activate Autosave",
	"*",
	[],
	[],
	autosave)

main()

Если код из тела данной статьи не работает, попробуй использовать код с GitHub по ссылке выше

Данный скрипт необходтимо поместить в папку с плагинами гимпа, в Linux, это /home/user/.gimp-x.x/plug-ins, на текущий момент это:

/home/user/.gimp-2.8/plug-ins

В этом каталоге создаем файл:

nano autosave.py

После добавления кода в файл и последующего сохранения, необходимо скрипт сделать исполняемым:

chmod +x autosave.py

Перезапустить Gimp или заюзать пункт меню - Filters > Script-Fu > Refresh scripts, после чего в меню File появится пунтк меню Activate Autosave.

Как это работает

  • Рандомно из буфера кидаем в Gimp ряд изображений
  • Активируем Autosave меню
  • Через некоторое время проверяем папку /tmp на наличие .xcf файлов

gimp autosave

Если Gimp закроется, то можно из /tmp открыть .xcf и радоваться :)

Еще по теме:

Добавить комментарий


Защитный код
Обновить

Сейчас 344 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз