標準機能で、すべてのレイヤーを内包するサイズへは簡単に変更出来ます。
しかし、特定のレイヤーに合わせたサイズにしようと思うと、これが、結構、手間です。
必要は発明の母。 作りましたよ。 Script-Fu で。
私が GIMP を使う場合、大抵は、画像(キャンバス)サイズが事前に決まっています。
でも、不特定の画像をレイヤーで取り込んだり、キャンバスより広大なレイヤーを操作する場合、
そのレイヤーの全域が見渡せた方が作業は楽です。
或いは、ひとつの画像から別サイズ画像(複数レイヤー)を切り出し 別名保存したい場合 等もキャンバスサイズを弄りたくなります。
例えば、 縦横共用のポストカードの雛形とか、 GIF アニメ用の動かす前提の大きなレイヤーを含む画像とか です。
標準では簡便ではないのですよね。 私が知らないだけで簡単な手順があるのかもですが ... 。
冒頭に書いた様に、
キャンバスサイズの変更として、コーディングする方法
を採りました。 *1.
ユーザーサイドから考えた場合、 この様な スクリプト ではパラメータは必要ありません。
選ばれている(活性化)レイヤーを対象にするだけです。
従って、 スクリプトに付きものの 数値操作画面 は ありません。
自作 Script 実行画像(I) > キャンバスを選択範囲に合わせる(I) 実行
スクリプトを実行すると、現在選択されている活性レイヤーと 同じ位置 同じ大きさ の
Script-Fu に慣れていないので、ゴリゴリのコードですが、一応、載せて置きます。
最初ちゃんと動かなかったので、備忘録的に、訂正する前のコードとコメントも残してあります。.
スクリプト名: Shiro-Layer-To-Resize-Image.scm *1.
登録関数名: script-fu-shiro-from-layer-to-resize-image *1.
;
; ---------------------------------------------- version 1.1 2015/12/25
; ---------------------------------------------- version 1.2 2015/12/26
; ---------------------------------------------- version 1.3 2016/01/12
; ---------------------------------------------- version 1.3 2019/07/04 Menu for GIMP 3.0
;
(define (script-fu-shiro-from-layer-to-resize-image
;引数
img
layer1
)
;処理
(gimp-image-undo-group-start img)
(gimp-image-resize-to-layers img)
; Before Resize, Select All Layers
(let ((width 0) (height 0) (leftTop_x 0) (leftTop_y 0) )
(set! layer1 (car (gimp-image-get-active-layer img)) )
(set! width (car (gimp-drawable-width layer1)) )
(set! height (car (gimp-drawable-height layer1)) )
(set! leftTop_x (car (gimp-drawable-offsets layer1)) )
(set! leftTop_y (cadr (gimp-drawable-offsets layer1)) )
;(gimp-rect-select img leftTop_x leftTop_y width height 0 0 0)
; Add Selection ;Deprecated
; Use 'gimp-image-select-rectangle' instead. (pdb)
;(gimp-image-select-rectangle img 2 leftTop_x leftTop_y width height)
; 2nd parameter Int32
; 0(Add追加) 1(Subtract減算) 2(Replace置換) 3(Intersect交差)
(gimp-image-resize img width height (- leftTop_x) (- leftTop_y))
)
(gimp-image-undo-group-end img)
(gimp-displays-flush)
)
;登録
(script-fu-register
"script-fu-shiro-from-layer-to-resize-image" ;func name v1.3
; "レイヤーから選択範囲 (Shiro版)" ;X menu label (X v1.2)
; "Create selection from layer (ShiroV.)" ;X menu label(Eng) (X v1.2)
; "レイヤーから選択範囲を作成" ;X description (X v1.2)
; "Create a selection from a layer" ;X description(Eng) (X v1.2)
"レイヤーから画像リサイズ (Shiro版)" ;menu label (v1.3)
; "Resize Image from layer (ShiroV.)" ;menu label(Eng) (v1.3)
"活性レイヤーから画像をリサイズ調整します v1.3" ;description (v1.3)
; "Resize(Adjust) Image from the active layer v1.3" ;description(Eng) (v1.3)
"ShiroYuki_Mot" ;author
"(c) 2015- ShiroYuki_Mot" ;copyright notice
"2015/12/24" ;date created
"*" ;image type on the script
;パラメータ
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
)
(script-fu-menu-register "script-fu-shiro-from-layer-to-resize-image"
"<Image>/Image")
ダウンロード用として、別 Blog に専用ページを設けました。
DownLoad Page > GIMP Script-Fu Shiro-Layer-To-Resize-Image *2.
そうそう、断って置きます。
メニューでのスクリプトの場所は 画像(I) の下にしてあります。 *1.
追記: *2.
当初の 選択範囲を作る 事を諦め、 最終目的の 画像変更迄 としました。
選択範囲のままでは、 スクリプト実行直後に、
画像サイズが全レイヤーを内包するサイズに変更されたままですので、
気付かずに、そのまま画像サイズを変更せずに保存した場合、
意に反したものが保存されてしまう のでは と考えました。
その為、名称や内容が大きく異なってしまい、 投稿として、見辛いとは思いますが、 ご勘弁下さい。
[2016/01/12] 問題発覚の為、リンク休止 目下、修正中。
[2016/01/13] コード暫定公開 *1. もう少し Debug してから、ファイル再公開にします。.
[2016/01/16] ファイルへの専用ページ リンク再開 及び 追記 追補 *2. きっと、大丈夫かと。.
[2016/01/19] 取り消し線 部分の文章の色を薄い灰色へ
[2019/07/05] GIMP 3.0 で (script-fu-register ... ) がメニューパス付を受け付けない事を反映
ソースコード部分を入れ替え 後日、リンク先も訂正予定
ご覧の皆さま へ。
返信削除大幅に、修正する事になってしまいました。
タイトルも スクリプト名も 関数名も 内容も 変わっています。
当初の やりたい事 は変わらないので、そのまま、訂正の上、公開としました。
訂正だらけで、見辛い投稿になっていますが、御了承下さい。
尚、ファイル公開は、もう少し、運用 Debug してからと させて戴きます。 目標。今週末。
追記
削除恐らく、大丈夫そうなので、 ファイル公開ページへのリンクを再開しました。