7

スクリーンショットがたくさんあるので、ウィンドウの境界線を切り取りたいと思います。スクリプトを使用してすべてをトリミングしたいと思います。

私はGIMPにアクセスできますが、フォトショップにはアクセスできないので、GIMPが使用するのに最適なツールであると思いました。私はこれまでGIMPでスクリプトを作成したことがないので、いくつかのGIMPクロップスクリプトを調べました。私が見つけたものはすべて私が欲しいものに似ていますが、完全ではありません。スクリプトを必要なものに変更するのは簡単なことだと思いました。しかし、私はスクリプト言語に精通していないため、思ったよりも難しいことがわかりました。ここで素晴らしい自動トリミングスクリプトを見つけました。誰かが私が必要なものに合わせてそれをカスタマイズするのを手伝ってもらえますか?

    (define (script-fu-rs-center-crop filename outfilename width height)

  (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
          (drawable (car (gimp-image-get-active-layer image))))
          (let* ((original-width (car (gimp-image-width image)))
               (original-height (car (gimp-image-height image)))
               (new-width original-width)
               (new-height original-height)
               (offset-x 0)
               (offset-y 0))

               (if (<= (/ original-width original-height) (/ width height))
                   (gimp-image-crop image original-width (* original-width (/ height width)) 0 (/ (- original-height (* original-width (/ height width))) 2) )
                   (gimp-image-crop image (* original-height (/ width height)) original-height (/ (- original-width (* original-height (/ width height))) 2) 0)
               )
           )

  (set! drawable (car (gimp-image-get-active-layer image)))

(gimp-file-save RUN-NONINTERACTIVE image drawable outfilename outfilename)
     (gimp-image-delete image)))

全体の寸法は、すべての写真で同じではありません。しかし、それらはすべて、私が切り抜いたい上、左、右、下に同じ数のピクセルを持っています。たとえば、画像にピクセルサイズがwidthあり、上からピクセル、下からピクセル、左からピクセル、右からピクセルheightを削除したいとします。だから私は新しい画像の寸法をとにしたい。t_junkb_junkl_junkr_junkwidth - l_junk - r_junkheight - t_junk - b_junk

4

2 に答える 2

9

エッジャースクリプト

私はあなたが求めていることを正確に実行するカスタムGIMPスクリプトを作成しました。以下をテキストドキュメントに貼り付けて、.scmGIMPスクリプトフォルダに拡張子を付けて保存します(パスはで検索/作成できますEdit > Preferences > Folders > Scripts)。

(define (script-fu-wirebear-edger filename outfilename top right bottom left)
(let* (
    (img (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
    (owidth (car (gimp-image-width img)))
    (oheight (car (gimp-image-height img)))
    (width (- owidth (+ right left)))
    (height (- oheight (+ top bottom)))
      )

   ;Crop Image
    (gimp-image-crop img width height left top)

   ;Save
    (gimp-file-save RUN-NONINTERACTIVE
        img
        (car (gimp-image-active-drawable img))
        outfilename
        outfilename)

   ;Cleanup
    (gimp-image-delete img)
))
(script-fu-register "script-fu-wirebear-edger"
    "Edger"
    "Removes junk from the edges of an image"
    "Chris Kent"
    "WireBear.com"
    "August 2011"
    "RGB* GRAY*"
    SF-STRING "Filename" ""
    SF-STRING "OutputFilename" ""
    SF-VALUE "TopEdge" "0"
    SF-VALUE "RightEdge" "0"
    SF-VALUE "BottomEdge" "0"
    SF-VALUE "LeftEdge" "0"
)
script-fu-wirebear-edger()

このスクリプトは、入力ファイル名、出力ファイル名、および両側で削り取るピクセル数を取り込みます。このコマンドは、Windowsから(環境変数としてGIMPが設定されていると仮定して)次のように実行できます(図のように特殊文字をエスケープし、すべてを1行に配置してください)

C:>gimp-2.6 -i -c -b
   "(script-fu-wirebear-edger \"C:\\Users\\You\\Desktop\\Images\\1.png\" 
   \"C:\\Users\\You\\Desktop\\Images\\1_edged.png\" 10 30 25 5)"
   -b "(gimp-quit 0)"

または、次のようなOSに関係なく、 Script-Fuコンソール( )で実行できます。Filters > Script-Fu > Console

(script-fu-wirebear-edger "C:\\Users\\You\\Desktop\\Images\\1.png" 
"C:\\Users\\You\\Desktop\\Images\\1_edged.png" 10 30 25 5)

バッチエッジャースクリプト

複数の画像でEdgerスクリプトを実行するには、次のスクリプトを上記のスクリプトと組み合わせて使用​​できます(Scriptsフォルダーに両方が必要です)。

(define (script-fu-wirebear-batch-edger pattern outsuffix top right bottom left)
(let* (
    (filelist (cadr (file-glob pattern 1)))
    (filename "")
    (outfn "")
      )
    (while (not (null? filelist))
        (set! filename (car filelist))
        (set! outfn 
            (string-append 
                (string-append 
                    (substring filename 0 (- (string-length filename) 4))
                    outsuffix)
                (substring filename (- (string-length filename) 4))
            )
        )
        (script-fu-wirebear-edger filename outfn top right bottom left)
        (set! filelist (cdr filelist))
    )
))
(script-fu-register "script-fu-wirebear-batch-edger"
    "Batch Edger"
    "Removes junk from the edges of a series of images"
    "Chris Kent"
    "WireBear.com"
    "August 2011"
    "RGB* GRAY*"
    SF-STRING "Pattern" "*.png"
    SF-STRING "OutputSuffix" "_edged"
    SF-VALUE "TopEdge" "0"
    SF-VALUE "RightEdge" "0"
    SF-VALUE "BottomEdge" "0"
    SF-VALUE "LeftEdge" "0"
)
script-fu-wirebear-batch-edger()

スクリプトは、ターゲット画像に一致する検索パターン、ファイル名に追加する接尾辞、およびすべての画像の両側で削り取るピクセル数を取り込みます。このコマンドは、Windowsから(環境変数としてGIMPが設定されていると仮定して)次のように実行できます(図のように特殊文字をエスケープし、すべてを1行に配置してください)

C:>gimp-2.6 -i -c -b
   "(script-fu-wirebear-batch-edger \"C:\\Users\\You\\Desktop\\Images\\*.png\" 
   \"_edged\" 10 30 25 5)"
   -b "(gimp-quit 0)"

または、次のようなOSに関係なく、 Script-Fuコンソール( )で実行できます。Filters > Script-Fu > Console

(script-fu-wirebear-batch-edger "C:\\Users\\You\\Desktop\\Images\\*.png"
"_edged" 10 30 25 5)
于 2011-08-09T19:33:10.233 に答える
4

Gimpはその仕事に適したツールではありません。imagemagickまたはgraphicsmagickをインストールします。convertバイナリが含まれています。

ここを参照してください:http://www.imagemagick.org/Usage/crop/#crop_repage

于 2011-04-27T23:02:36.463 に答える