GIMP脚本中参数“ layer”的ID无效

时间:2019-04-12 09:49:05

标签: gimp script-fu

我正在使用以下脚本通过GIMP script-fu对某些图像文件进行批处理:

       (let* ((filename (car filelist))
              (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
              (imagelayer (car (gimp-image-get-layers image)))
              (bglayer (car (gimp-layer-new image 8400 5939 1 ""bg"" 100 LAYER-MODE-NORMAL))))
         (gimp-image-add-layer image bglayer 1)
         (gimp-layer-set-offsets (car (gimp-image-get-layers image)) 0 870)

第2行加载图像,第3行获得图像的单层,第4行创建新的背景层,第5行将新层添加到图像,第6行设置图像层的偏移量。

但是第6行会引发以下错误:

GIMP-Error: Calling error for procedure 'gimp-layer-set-offsets':
Procedure 'gimp-layer-set-offsets' has been called with an invalid ID for 
argument 'layer'. Most likely a plug-in is trying to work on a layer that 
doesn't exist any longer.

我试图将第6行更改为以下内容,但出现了相同的错误:

         (gimp-layer-set-offsets imagelayer 0 870)

奇怪的是,错误并不总是出现,有时例程运行时没有错误。

这是GIMP错误还是脚本错误?

2 个答案:

答案 0 :(得分:1)

一个可能的解释是,硬编码图层类型(1:RGBA-IMAGE)与图像类型不兼容(例如,color-indexed(*)...),因此您的图层未添加到图像中。尝试强制使用图像类型(set regExp to "[0-9]{5}" ),或将图层类型设置为与图像类型兼容的内容(\d,或重新使用现有图层的类型。)

(*)AFAIK有(很少)灰度JPG,并且有更频繁的颜色索引PNG,然后是GIF。

答案 1 :(得分:0)

gimp-image-get-layers返回2个值的列表,层数和层ID列表。

通过使用汽车,您已选择使用“层数”值作为层ID。

尝试改用gimp-image-get-active-layer。