Canvas在索引图像上调整Script-Fu Gimp中的大小并更改分辨率

时间:2012-05-30 14:57:12

标签: gimp script-fu

我对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")

1 个答案:

答案 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)