klaus_harrer
21.05.2004, 11:34
Hallo
Ich habe im Forum gelesen das es noch kein Script gibbt das zwei Bilder zu eins verschmelzen kann. Ich habe ein Script geschrieben das einen Lösungsansatz bietet aber sicherlich noch nicht perfekt ist. Dieses Script können auch Windows user nutzen da es ein Script-Fu geschreiben ist.
(define (script-fu-image-combine file_1 file_2 interleave background-color)
(set! img0 (car (gimp-file-load 1 file_1 file_1)))
(set! img0-layer(car (gimp-image-get-active-drawable img0)))
(set! img1 (car (gimp-file-load 1 file_2 file_2)))
(set! img1-layer(car (gimp-image-get-active-drawable img1)))
(set! width0 (car (gimp-image-width img0)))
(set! width1 (car (gimp-image-width img1)))
(set! height0 (car (gimp-image-height img0)))
(set! height1 (car (gimp-image-height img1)))
(set! img-interleave(* interleave 2))
(set! new-width (+ width0 width1(- img-interleave)))
(set! new-image (car (gimp-image-new new-width height0 RGB)))
(set! layer0 (car (gimp-layer-new new-image new-width height0 RGB-IMAGE "Background" 100 NORMAL-MODE)))
(gimp-image-add-layer new-image layer0 0)
(gimp-palette-set-background background-color)
(gimp-edit-fill layer0 BACKGROUND-FILL)
(set! layer1 (car (gimp-layer-new new-image width0 height0 RGB-IMAGE "first layer" 100 NORMAL-MODE)))
(gimp-image-add-layer new-image layer1 -1)
(gimp-edit-copy img0-layer)
(set! floating-sel (car (gimp-edit-paste layer1 FALSE)))
(gimp-floating-sel-anchor floating-sel)
(gimp-layer-add-alpha layer1)
(set! mask (car (gimp-layer-create-mask layer1 ADD-WHITE-MASK)))
(gimp-layer-add-mask layer1 mask)
(set! layer2 (car (gimp-layer-new new-image width1 height1 RGB-IMAGE "second layer" 100 NORMAL-MODE)))
(gimp-image-add-layer new-image layer2 -1)
(gimp-edit-copy img1-layer)
(set! floating-sel1 (car (gimp-edit-paste layer2 FALSE)))
(gimp-floating-sel-anchor floating-sel1)
(gimp-layer-add-alpha layer2)
(gimp-layer-set-offsets layer2 (- width0 img-interleave) 0)
(set! mask1 (car (gimp-layer-create-mask layer2 ADD-WHITE-MASK)))
(gimp-layer-add-mask layer2 mask1)
(gimp-palette-set-foreground '(0 0 0))
(gimp-palette-set-background '(255 255 255))
(gimp-edit-blend mask FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 REPEAT-NONE 0 0 0 0 0 0 width0 0 (- width0 img-interleave) 0)
(gimp-edit-blend mask1 FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 REPEAT-NONE 0 0 0 0 0 0 0 0 img-interleave 0)
(gimp-layer-remove-mask layer1 0)
(gimp-layer-remove-mask layer2 0)
(gimp-image-merge-visible-layers new-image 2)
(gimp-display-new new-image)
)
(script-fu-register
"script-fu-image-combine"
"<Toolbox>/Xtns/Script-Fu/Misc/Image combine..."
"combine two Image at one"
"Klaus Harrer"
"copyright 2004, Klaus Harrer"
"May 15, 2004"
""
SF-FILENAME _"file1" ""
SF-FILENAME _"file2" ""
SF-VALUE _"interleave" "50"
SF-COLOR _"Background Color" '(255 255 255)
)
Der Dialog:
interleave=> Überlappung der zu verschmelzenen Bilder
Hintergrund => die Hintergrundfarbe des enstehenden Bildes
http://home.arcor.de/klaus_harrer/Grafiken/gimp/img_com_dia.png
das Ergebnis:
http://home.arcor.de/klaus_harrer/Grafiken/gimp/img_com_erg.png
MfG
Klaus[/code]
Ich habe im Forum gelesen das es noch kein Script gibbt das zwei Bilder zu eins verschmelzen kann. Ich habe ein Script geschrieben das einen Lösungsansatz bietet aber sicherlich noch nicht perfekt ist. Dieses Script können auch Windows user nutzen da es ein Script-Fu geschreiben ist.
(define (script-fu-image-combine file_1 file_2 interleave background-color)
(set! img0 (car (gimp-file-load 1 file_1 file_1)))
(set! img0-layer(car (gimp-image-get-active-drawable img0)))
(set! img1 (car (gimp-file-load 1 file_2 file_2)))
(set! img1-layer(car (gimp-image-get-active-drawable img1)))
(set! width0 (car (gimp-image-width img0)))
(set! width1 (car (gimp-image-width img1)))
(set! height0 (car (gimp-image-height img0)))
(set! height1 (car (gimp-image-height img1)))
(set! img-interleave(* interleave 2))
(set! new-width (+ width0 width1(- img-interleave)))
(set! new-image (car (gimp-image-new new-width height0 RGB)))
(set! layer0 (car (gimp-layer-new new-image new-width height0 RGB-IMAGE "Background" 100 NORMAL-MODE)))
(gimp-image-add-layer new-image layer0 0)
(gimp-palette-set-background background-color)
(gimp-edit-fill layer0 BACKGROUND-FILL)
(set! layer1 (car (gimp-layer-new new-image width0 height0 RGB-IMAGE "first layer" 100 NORMAL-MODE)))
(gimp-image-add-layer new-image layer1 -1)
(gimp-edit-copy img0-layer)
(set! floating-sel (car (gimp-edit-paste layer1 FALSE)))
(gimp-floating-sel-anchor floating-sel)
(gimp-layer-add-alpha layer1)
(set! mask (car (gimp-layer-create-mask layer1 ADD-WHITE-MASK)))
(gimp-layer-add-mask layer1 mask)
(set! layer2 (car (gimp-layer-new new-image width1 height1 RGB-IMAGE "second layer" 100 NORMAL-MODE)))
(gimp-image-add-layer new-image layer2 -1)
(gimp-edit-copy img1-layer)
(set! floating-sel1 (car (gimp-edit-paste layer2 FALSE)))
(gimp-floating-sel-anchor floating-sel1)
(gimp-layer-add-alpha layer2)
(gimp-layer-set-offsets layer2 (- width0 img-interleave) 0)
(set! mask1 (car (gimp-layer-create-mask layer2 ADD-WHITE-MASK)))
(gimp-layer-add-mask layer2 mask1)
(gimp-palette-set-foreground '(0 0 0))
(gimp-palette-set-background '(255 255 255))
(gimp-edit-blend mask FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 REPEAT-NONE 0 0 0 0 0 0 width0 0 (- width0 img-interleave) 0)
(gimp-edit-blend mask1 FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 REPEAT-NONE 0 0 0 0 0 0 0 0 img-interleave 0)
(gimp-layer-remove-mask layer1 0)
(gimp-layer-remove-mask layer2 0)
(gimp-image-merge-visible-layers new-image 2)
(gimp-display-new new-image)
)
(script-fu-register
"script-fu-image-combine"
"<Toolbox>/Xtns/Script-Fu/Misc/Image combine..."
"combine two Image at one"
"Klaus Harrer"
"copyright 2004, Klaus Harrer"
"May 15, 2004"
""
SF-FILENAME _"file1" ""
SF-FILENAME _"file2" ""
SF-VALUE _"interleave" "50"
SF-COLOR _"Background Color" '(255 255 255)
)
Der Dialog:
interleave=> Überlappung der zu verschmelzenen Bilder
Hintergrund => die Hintergrundfarbe des enstehenden Bildes
http://home.arcor.de/klaus_harrer/Grafiken/gimp/img_com_dia.png
das Ergebnis:
http://home.arcor.de/klaus_harrer/Grafiken/gimp/img_com_erg.png
MfG
Klaus[/code]