>> 古い記事: Script-Fu: 関数メモ
<< 新しい記事: [雑ログ] Ubuntu 7.04 にて gimp-ruby をインストールしようとしてあきらめた

スポンサーサイト

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

Script-Fu: レイヤー内にあるものを画像の中央に移動させる

「レイヤー内にあるもの」としていますが、要するにそのレイヤーの描画部分というか、 アルファ値が 0 でない部分です。

レイヤーのサイズを強制的に画像サイズに合わせるようにしています。 もしそうしたくない(レイヤーサイズないしレイヤー境界を変化させたくない)場合は ★ のついている箇所をコメントアウトしてください。

たまに変な挙動(中央に来ないとか)を示すようです・・・。

; anobota-both-centering.scm

(define (script-fu-anobota-both-centering img drawable)
; 変数宣言・初期化
(let ( (imgwidth  0) (imgheight 0)
       (drwwidth  0) (drwheight 0)
       (offsetx 0) (offsety 0)
     )

  ; アンドゥしたらここに戻る
  (gimp-image-undo-group-start img)

  ; image の幅と高さを取得
  (set! imgwidth (car  (gimp-image-width  img)) )
  (set! imgheight (car (gimp-image-height img)) )

  ; アルファチャンネルを選択領域に ★
  (gimp-selection-layer-alpha drawable)
  ; レイヤーの自動切り抜き ★
  (plug-in-autocrop-layer 0 img drawable)
  ; 選択領域の解除 ★
  (gimp-selection-none img)
  
  ; 選択領域の幅と高さ
  (set! drwwidth  (car (gimp-drawable-width drawable)) )
  (set! drwheight (car (gimp-drawable-width drawable)) )

  ; 中央に移動した時のオフセット
  (set! offsetx (/ (- imgwidth  drwwidth ) 2 ) )
  (set! offsety (/ (- imgheight drwheight) 2 ) )

  ; 移動(オフセットの変更)
  (gimp-layer-set-offsets drawable offsetx offsety)

  ; レイヤーを画像サイズに合わせる ★
  (gimp-layer-resize-to-image-size drawable)
  
  ; 表示に反映
  (gimp-displays-flush)

  ; ここまでがアンドゥの対象
  (gimp-image-undo-group-end img)
))

; ******** ******** ******** ********

(script-fu-register
  "script-fu-anobota-both-centering"
  "<Image>/Script-Fu/misc/中央に移動" ; このスクリプトのメニュー位置
  "レイヤー内にあるものを画像の中央に移動する" ; このスクリプトの説明
  "sonota"     ; 作者名
  "(c)2007"    ; コピーライト
  "2007-06-20" ; 日付
  "RGB*, GRAY*, INDEXED*"  ; スクリプトが動作可能なモード
  SF-IMAGE    "Image"    0 ; 引数1
  SF-DRAWABLE "Drawable" 0 ; 引数2
)

Gimp: 記事のもくじ
テーマ:2DCG - ジャンル:コンピュータ

>> 古い記事: Script-Fu: 関数メモ
<< 新しい記事: [雑ログ] Ubuntu 7.04 にて gimp-ruby をインストールしようとしてあきらめた
** ホームに戻る

コメント

コメントの投稿

管理者にだけ表示を許可する

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