GIMP中的水印脚本

问题描述 投票:0回答:1

我想编写一个简单的脚本,该脚本是:1)将图像缩小25%(宽度50%,高度50%,2)在另一幅图像上添加水印(最后我想将其不透明度设置为20 %)。

我的问题是我不完全了解自己对创建的图层所做的处理。对于一堆文件,脚本可以工作(但是让它工作起来很痛苦!),我更改了参数,但是看来我无法使其按我的意愿工作)。我没有看到水印图像-除了我为gimp-file-savedrawable2时(那时只有水印)。

有人可以帮我吗? -并在这里向我解释我做错了什么?

 (define (add-watermark2 pattern waterm)


  (let* ((filelist (cadr (file-glob pattern 1))))
      (while (not (null? filelist))
          (let* ((filename (car filelist))
              (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
              (drawable   (car (gimp-image-active-drawable image)))
              (cur-width  (car (gimp-image-width image)))
              (cur-height (car (gimp-image-height image)))
              (width      (* 0.50 cur-width))
              (height     (* 0.50 cur-height))

              (gimp-image-scale image width height)   ; scale the image    

              (drawable2  (car (gimp-file-load-layer RUN-NONINTERACTIVE  image waterm)))
              (gimp-image-insert-layer image drawable2 0 -1) 
              (gimp-layer-set-offsets drawable2 100 100 )
              (gimp-layer-set-mode drawable2 0)
                (gimp-image-merge-visible-layers image 2)
          )

      (gimp-file-save   RUN-NONINTERACTIVE image drawable (string-append "w" filename) "")
  )
  (set! filelist (cdr filelist)) 
)))   
layer watermark gimp script-fu
1个回答
0
投票

Gimp API中对单层格式的“保存”操作适用于“可绘制”(通常是一层)。因此,要导出图像,您必须制作一个代表整个图像的图层。这是使用(gimp-image-merge-visible-layers image 2)的操作,但是没有在(gimp-file-save ...)调用中使用此调用返回的图层。

这就是说,对于这种操作,ImageMagick比Gimp更好/更快,因为它旨在从Shell脚本运行。

© www.soinside.com 2019 - 2024. All rights reserved.