|

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Script-fu: 矩形選択範囲からImagemagick crop用のgeometry表現を得る

メニューから 選択>geometry for Imagemagick crop を選ぶと次のスクリーンショットのように表示されます。
2011-11-04 20:35:53

※ちなみに Imagemagick そのものにも似たような機能はあるんですが、なんとなく自作してみました。


(define (anbt-geometry-for-im-crop:selection-bounds img)
  (let* ((bounds (gimp-selection-bounds img))
         (x1 (nth 1 bounds))
         (y1 (nth 2 bounds))
         (x2 (nth 3 bounds))
         (y2 (nth 4 bounds))
         )
    (list x1
          y1
          (- x2 x1)
          (- y2 y1))))


(define (anbt-geometry-for-im-crop:selection-active? img)
  (not (equal? TRUE
               (car (gimp-selection-is-empty img)))))


(define (anbt-geometry-for-im-crop:main img)
  (let* ((img-w (car (gimp-image-width img)))
         (img-h (car (gimp-image-height img)))
         (bounds (anbt-geometry-for-im-crop:selection-bounds img))
         (offset-x-pixel   (nth 0 bounds))
         (offset-y-pixel   (nth 1 bounds))
         (sel-width-pixel  (nth 2 bounds))
         (sel-height-pixel (nth 3 bounds))
         (sel-width-percent)
         (sel-height-percent)
         (offset-pixel)
         (geometry-pixel)
         (geometry-percent))

    (set! sel-width-percent  (round (* 100 (/ sel-width-pixel img-w))))
    (set! sel-height-percent (round (* 100 (/ sel-height-pixel img-h))))

    (set! offset-pixel
          (string-append "+" (number->string offset-x-pixel)
                         "+" (number->string offset-y-pixel)))

    (set! geometry-percent
          (string-append (number->string sel-width-percent) "%"
                         "x"
                         (number->string sel-height-percent) "%"
                         offset-pixel))
    (set! geometry-pixel
          (string-append (number->string sel-width-pixel)
                         "x"
                         (number->string sel-height-pixel)
                         offset-pixel))

    (string-append geometry-pixel
                   "\n"
                   geometry-percent)))

;;(anbt-geometry-for-im-crop:main 1)


(define (script-fu-anbt-geometry-for-im-crop img)
  (if (anbt-geometry-for-im-crop:selection-active? img)
      (gimp-message (anbt-geometry-for-im-crop:main img))
      (gimp-message "selection is empty")))


(script-fu-register
 "script-fu-anbt-geometry-for-im-crop"
 "/Select/geometry for Imagemagick crop" ; このスクリプトのメニュー位置
 "get geometry for Imagemagick crop from selection"        ; このスクリプトの説明
 "sonota"            ; 作者名
 "(c) 2011"          ; コピーライト
 "2011-10-16"        ; 日付
 "RGB*, GRAY*"       ; スクリプトが動作可能なモード
 SF-IMAGE "Image" 0  ; 引数1
 )
スポンサーサイト



** ホームに戻る

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。