(define (script-fu-save-with-copy image drawable) (let* ( (dup-image (car (gimp-image-duplicate image))) (layers (gimp-image-get-layers dup-image)) (background (aref (cadr layers) (- (car layers) 1))) (filename (car (gimp-image-get-filename image))) ) (gimp-xcf-save 0 image drawable filename filename) ;save the XCF ;now the PNG copy (gimp-drawable-set-visible background FALSE) ;;clip to image behaves weirdly ;; (set! drawable (car (gimp-image-merge-visible-layers dup-image CLIP-TO-IMAGE))) (set! drawable (car (gimp-image-merge-visible-layers dup-image CLIP-TO-BOTTOM-LAYER))) (set! filename (strbreakup filename ".")) (if (= (string-length (car filename)) 0) (set! filename "Untitled") (begin (if (or (= (strcmp (car (last filename)) "bz2") 0) (= (strcmp (car (last filename)) "gz") 0)) (set! filename (butlast filename))) (set! filename (unbreakupstr (butlast filename) ".")) ) ) (set! filename (string-append filename ".png")) (file-png-save-defaults RUN-NONINTERACTIVE dup-image drawable filename filename) (gimp-image-delete dup-image) ) ) (script-fu-register "script-fu-save-with-copy" "/File/Save with PNG copy" "Saves XCF with a copy of the image in PNG format" "Saul Goode, Jakub Steiner" "Saul Goode, Jakub Steiner" "2006-12-12" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Layer" 0 )