Gibt es eine einfache Möglichkeit, ein quadratisches Bild in GIMP automatisch zuzuschneiden / automatisch zu verkleinern, ohne jedoch das Seitenverhältnis zu ändern? Grundsätzlich würde das automatische Schrumpfen aufhören, sobald es nicht mehr möglich ist, die Gleichheit von Höhe und Breite beizubehalten.
Ich habe dies mit imagemagick und Powershell verwendet:
convert $files[$i].Name -set option:size '%[fx:max(w,h)]x%[fx:max(w,h)]'
\ xc:none +swap -gravity center -composite $outfile
Am liebsten würde ich das mit scheme/script-fu machen.
Etwas wie das:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import os, sys
from gimpfu import *
def squareCrop(image,layer):
pdb.gimp_image_undo_group_start(image)
try:
x0,y0=layer.offsets
# get size and offsets of fully autocropped layer
copy=layer.copy()
image.add_layer(copy)
pdb.plug_in_autocrop_layer(image,layer)
xC,yC=copy.offsets
hC,wC=copy.height,copy.width
image.remove_layer(copy)
# determine padding direction
topBottomPad=wC > hC
pad=abs(hC-wC)/2
# determine size and offsets for resize
xOff,yOff=(x0-xC,y0+pad-yC) if topBottomPad else (x0+pad-xC,y0-yC)
w,h=(wC,wC) if topBottomPad else (hC,hC)
layer.resize(w,h,xOff,yOff)
except Exception as e:
print e.args[0]
pdb.gimp_message(e.args[0])
pdb.gimp_image_undo_group_end(image)
### Registrations
whoiam='\n'+os.path.abspath(sys.argv[0])
register(
'square-crop',
'Square crop'+whoiam,
'Square crop',
'Ofnuts','Ofnuts','2016',
'Square crop...',
"RGB*",
[
(PF_IMAGE, "image", "Input image", None),
(PF_DRAWABLE, "drawable", "Input drawable", None),
],
[],
squareCrop,
menu="<Image>/Layer/Transform",
)
main()
Beachten Sie, dass Sie auf diese Weise nicht zuschneiden können, wenn Sie sich zu nahe an einem Rand befinden, da die Polsterung über die Leinwandgrenzen hinausgehen würde (etwas, das durch den obigen Code nicht überprüft wird).
plug-ins
Verzeichnis anstelle des Verzeichnisses befinden scripts
(und sollte unter Linux und OSX das Ausführbar- Flag haben).cc96a13b33a9b5084e212d2a2f2a3fb9
, es hat das ausführbare Bit gesetzt, wenn Sie Linux oder OSX verwenden, und es befindet sich im plug-ins
Verzeichnis Ihres Gimp-Profils (wie aufgeführt unter Bearbeiten>Einstellungen>Ordner>Plug-Ins ). Sie können Gimp mit einem --verbose
Parameter starten (OSX/Linux: Terminal, in Windows: Verknüpfung bearbeiten) und Sie erhalten beim Start jede Menge Startmeldungen ...python-fu-square-crop
in der pluginrc
Datei in Ihrem Gimp-Profilverzeichnis.Hier ist meine Lösung:
(define (square image drawable)
(gimp-image-undo-group-start image)
(gimp-context-push)
(plug-in-autocrop 1 image drawable)
(let* (
(width (car (gimp-image-width image)))
(height (car (gimp-image-height image)))
(newWidth width)
(newHeight height)
(layer (vector-ref (cadr (gimp-image-get-layers image)) 0))
)
(if (< width height)
(set! newWidth height)
)
(if (> width height)
(set! newHeight width)
)
(gimp-image-resize image newWidth newHeight (/ (- newWidth width) 2) (/ (- newHeight height) 2))
(gimp-layer-resize-to-image-size layer)
(gimp-image-clean-all image)
(gimp-context-pop)
(gimp-image-undo-group-end image)
(gimp-displays-flush)
(list newWidth newHeight)
)
)
(script-fu-register
"square"
"<Image>/Tools/Square"
""
"Matthew Morrone"
"Uncopyright 2016 Matthew Morrone"
"27 September 2016"
"*"
SF-IMAGE "Input Image" 0
SF-DRAWABLE "Input Drawable" 0
)
Michael Schumacher