我正在使用以下脚本通过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错误还是脚本错误?
答案 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。