我对Script-Fu有点新,需要将分辨率从600DPI更改为300DPI,然后画布调整为1000px W到2000px H,同时保持实际图像大小不变。否则我的照片就会被拉长。
我确信剧本应该像我发现的那样。但是这个特别抱怨我的图像被索引并且它想要一个RGB图像。我不想做...
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;
; File = script-fu-grow-canvas.scm
; function name script-fu-grow-canvas
;
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;
( define
( script-fu-grow-canvas
theImage
theDrawable
)
;
(gimp-image-undo-group-start theImage)
( let*
(
; Define local variables
; imageWidth, imageHeight, centerX, centerY
; Measure the height and width of the image.
; Calculate the center
( imageWidth ( car ( gimp-drawable-width theDrawable )))
( imageHeight ( car ( gimp-drawable-height theDrawable )))
( centerX ( / imageWidth 2 ))
( centerY ( / imageHeight 2 ))
( tenthWidth ( / imageWidth 8 ))
( tenthHeight ( / imageHeight 8 ))
( borderx tenthWidth )
( bordery tenthHeight )
( newWidth 0 )
( newHeight 0 )
( dummyLayer 0 )
( layername "DummyLayer" )
;
) ; End of Variable Declaration
; if Aspect ratio widget is unchecked make X and Y
; length the greater of the two.
( set! newWidth ( + imageWidth ( * borderx 2 )))
( set! newHeight ( + imageHeight ( * bordery 2 )))
;
( set! dummyLayer (car ( gimp-layer-new
theImage
imageWidth
imageHeight
0
layername
10
0 ))
)
( gimp-image-add-layer theImage dummyLayer 1 )
( gimp-layer-resize dummyLayer
newWidth
newHeight
borderx
bordery )
( script-fu-para-tat-layer
theImage
dummyLayer
layername )
( gimp-image-resize-to-layers theImage )
;
( gimp-drawable-set-visible dummyLayer FALSE )
( gimp-image-set-active-layer theImage theDrawable )
) ; END let*
(gimp-image-undo-group-end theImage)
) ; END define
( script-fu-register "script-fu-grow-canvas" ; Function Name
"02 Expand Canvas" ; Menu Label
"Expand the image canvas based on image
size" ; Function Description
"Stephen Kiel" ; Author
"2011, Stephen Kiel" ; Copyright
"December 2011" ; Creation Date
"*" ; Valid Image Type
SF-IMAGE "theImage" 0
SF-DRAWABLE "theDrawable" 0
) ; End script-fu-register
( script-fu-menu-register
"script-fu-grow-canvas" "<Image>/Flowzilla/Flow - Standard")
答案 0 :(得分:2)
您正在使用gimp-layer-new创建新的RGB类型图层 - 此类图层无法添加到索引图像中。
许多其他的script-fu调用可能会被限制为索引图像 - 并且有办法解决它们 - 但这不是这种情况
图层类型的值是您在“layername”参数之前放置的“0”。根据文档(使用GIMP帮助菜单中的“Procdure Browser”可见), 对于图层类型,我们应该将INDEXEDA-IMAGE传递给它,用于索引图像(0表示RGB-IMAGE)。
使用命名常量非常重要,因为它们在文档中显示,而不是它们所代表的数字,因为不保证这些数字在不同版本中保持相同,并且由于使用名称添加了上下文和对代码的可读性。
同样,你不应该使用“10”作为图层模式,而是使用适合你的合适的常量名称(GIMP 2.6中的LIGHTEN-ONLY-MODE)