Edger Script
Я написал собственный скрипт GIMP, который делает именно то, что вы просили.Просто вставьте следующее в текстовый документ и сохраните его с расширением .scm
в папке скриптов GIMP (путь можно найти / создать в Edit > Preferences > Folders > Scripts
):
(define (script-fu-wirebear-edger filename outfilename top right bottom left)
(let* (
(img (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(owidth (car (gimp-image-width img)))
(oheight (car (gimp-image-height img)))
(width (- owidth (+ right left)))
(height (- oheight (+ top bottom)))
)
;Crop Image
(gimp-image-crop img width height left top)
;Save
(gimp-file-save RUN-NONINTERACTIVE
img
(car (gimp-image-active-drawable img))
outfilename
outfilename)
;Cleanup
(gimp-image-delete img)
))
(script-fu-register "script-fu-wirebear-edger"
"Edger"
"Removes junk from the edges of an image"
"Chris Kent"
"WireBear.com"
"August 2011"
"RGB* GRAY*"
SF-STRING "Filename" ""
SF-STRING "OutputFilename" ""
SF-VALUE "TopEdge" "0"
SF-VALUE "RightEdge" "0"
SF-VALUE "BottomEdge" "0"
SF-VALUE "LeftEdge" "0"
)
script-fu-wirebear-edger()
Этот скрипт принимаетвходное имя файла, выходное имя файла и количество пикселей, которые нужно сбрить с каждой стороны.Вы можете запустить команду из Windows (при условии, что в качестве переменной среды установлена GIMP) вот так (Обязательно экранируйте специальные символы, как показано, и поместите все в одну строку) :
C:>gimp-2.6 -i -c -b
"(script-fu-wirebear-edger \"C:\\Users\\You\\Desktop\\Images\\1.png\"
\"C:\\Users\\You\\Desktop\\Images\\1_edged.png\" 10 30 25 5)"
-b "(gimp-quit 0)"
Или вы можете запустить его в консоли Script-Fu (Filters > Script-Fu > Console
) - независимо от операционной системы, например:
(script-fu-wirebear-edger "C:\\Users\\You\\Desktop\\Images\\1.png"
"C:\\Users\\You\\Desktop\\Images\\1_edged.png" 10 30 25 5)
BatchСценарий Edger
Чтобы запустить сценарий Edger на нескольких изображениях, вы можете использовать следующий сценарий в сочетании с приведенным выше сценарием (вам понадобится оба в папке Scripts):
(define (script-fu-wirebear-batch-edger pattern outsuffix top right bottom left)
(let* (
(filelist (cadr (file-glob pattern 1)))
(filename "")
(outfn "")
)
(while (not (null? filelist))
(set! filename (car filelist))
(set! outfn
(string-append
(string-append
(substring filename 0 (- (string-length filename) 4))
outsuffix)
(substring filename (- (string-length filename) 4))
)
)
(script-fu-wirebear-edger filename outfn top right bottom left)
(set! filelist (cdr filelist))
)
))
(script-fu-register "script-fu-wirebear-batch-edger"
"Batch Edger"
"Removes junk from the edges of a series of images"
"Chris Kent"
"WireBear.com"
"August 2011"
"RGB* GRAY*"
SF-STRING "Pattern" "*.png"
SF-STRING "OutputSuffix" "_edged"
SF-VALUE "TopEdge" "0"
SF-VALUE "RightEdge" "0"
SF-VALUE "BottomEdge" "0"
SF-VALUE "LeftEdge" "0"
)
script-fu-wirebear-batch-edger()
Сценарий принимает шаблон поиска для соответствия целевым изображениям, суффикс, добавляемый к имени файла, и количество пикселей, которые нужно сбрить на каждой стороне каждого изображения.Вы можете запустить команду из Windows (при условии, что вы настроили GIMP в качестве переменной среды) вот так (Обязательно экранируйте специальные символы, как показано, и поместите все в одну строку) :
C:>gimp-2.6 -i -c -b
"(script-fu-wirebear-batch-edger \"C:\\Users\\You\\Desktop\\Images\\*.png\"
\"_edged\" 10 30 25 5)"
-b "(gimp-quit 0)"
Или вы можете запустить его в консоли Script-Fu (Filters > Script-Fu > Console
) - независимо от ОС, подобной этой:
(script-fu-wirebear-batch-edger "C:\\Users\\You\\Desktop\\Images\\*.png"
"_edged" 10 30 25 5)