2

私はScript-Fuに少し慣れていないので、解像度を600DPIから300DPIに変更してから、実際の画像サイズをそのままにして、キャンバスのサイズを1000px W x2000pxHに変更する必要があります。そうしないと、私の写真が引き伸ばされてしまいます。

スクリプトは、私が見つけたこのようなものに沿ったものになるはずです。しかし、これは特に私の画像がインデックスに登録されていることについて不平を言っており、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")
4

1 に答える 1

2

gimp-layer-newを使用して、新しいRGBタイプのレイヤーを作成しています。このタイプのレイヤーは、インデックス付きの画像に追加できません。

他の多くのscript-fu呼び出しは、インデックス付き画像に対して制限される可能性があります-そしてそれらを回避する方法があります-しかし、ここではそうではありません

レイヤータイプの値は、「layername」パラメーターの直前に配置した「0」です。ドキュメント(GIMPのヘルプメニューの[Procdure Browser]を使用して表示)によると、レイヤータイプの列挙があり、インデックス付き画像の場合はINDEXEDA-IMAGEを渡す必要があります(0はRGB-IMAGEの場合)。

名前付き定数は、それらが表す番号ではなく、ドキュメントに示されているとおりに使用することが重要です。これらの番号はバージョン間で同じであることが保証されておらず、名前を使用するとコンテキストと読みやすさが向上するためです。コード。

同様に、レイヤーモードには「10」を使用しないでください。適切な定数名を使用してください(GIMP 2.6のLIGHTEN-ONLY-MODE)

于 2012-05-31T18:03:28.203 に答える