web-dev-qa-db-ja.com

キャンバスに合わせてレイヤーのサイズを変更する-Gimp

現在、Gimpを使用して一部の画像のサイズを変更しています。私はWeb開発者ですが、ほとんどの画像はデザイナーによって提供されているため、Gimpツールは私にはあまり馴染みのないものなので、実際には画像操作ソフトウェアをあまり使用していません。 Gimpサイトのすべてのチュートリアルとヘルプガイドを調べましたが、最も簡単な質問に対する答えが見つかりません。

アスペクト比を維持しながら、現在のキャンバスに収まるようにレイヤーのサイズをどのように変更しますか?

私は基本的にキャンバスに固定サイズを設定し、画像をレイヤーとしてプロジェクトにインポートしています。次に、この非常に大きな画像を縮小して、縦横比を維持したままCanvasに収まるようにします。レイヤーに合わせてキャンバスをスケーリングする方法を見つけましたが、これは私が探しているものではありません。

どんな助けでも大歓迎です。

16
jezzipin

これは簡単に実行できますが、プログラムのUIに配置できる数百のオプションの中で、そこに「選択」されることはありませんでした。

解決策は、プログラムのスクリプト機能を使用してアクションを実行することです。プログラムで決定する必要があるのは、画像/レイヤーの比率が幅または高さのどちらで大きいかであり、この比率を使用してレイヤーをスケーリングし、中央に配置します。レイヤー。

便宜上、Pythonコードを1行で記述しました。python console(filters- > python-> console)は、最新の開いている画像の最上層に効果を適用します。

img = gimp.image_list()[0]; layer = img.layers[0]; factor = min (float(img.width) / layer.width, float(img.height) / layer.height); layer.scale(int(layer.width * factor), int(layer.height * factor)); layer.set_offsets((img.width - layer.width) / 2, (img.height - layer.height) / 2)

これは可能ですが、実用的ではありませんが、画像やレイヤーを選択してサイズを変更できないため、これもGIMP用のpythonスクリプトとしてフォーマットしました。プラグインディレクトリのedit-> preferences-> folders-> plug-insを確認し、以下の内容をファイルとして貼り付けます(Windowsの場合、ファイルの拡張子は「.py」にする必要があります。LinuxおよびMacの場合OS、どの拡張子でも機能しますが、ファイルに「実行可能な」プロパティを指定する必要があります)。

GIMPを再起動すると、新しいコマンドがLayerメニューに配置されます。

#! /usr/bin/env python
# coding: utf-8

from gimpfu import *

def scale_layer_to_canvas_size(img, layer):
    pdb.gimp_image_undo_group_start(img)
    factor = min (float(img.width) / layer.width,
                 float(img.height) / layer.height)

    layer.scale(int(layer.width * factor), int(layer.height * factor))
    layer.set_offsets((img.width - layer.width) / 2,
        (img.height - layer.height) / 2)
    pdb.gimp_image_undo_group_end(img)

register("scale-layer-to-canvas-size",
    "Scale layer to canvas size",
    "Scales the layer to canvas size, keeping the aspect ratio",
    "João S. O. Bueno", "Public domain", "2014",
    N_("Scale layer to canvas size..."),
    "*",
    [(PF_IMAGE, "image",       "Input image", None),
     (PF_DRAWABLE, "layer", "Input drawable", None), ], [],
    scale_layer_to_canvas_size,  menu="<Image>/Layer/",
    )

main()

上記と同じコードですが、メニューからアクションを選択すると、「img」と「layer」がGIMPによって提供されるようになりました。また、2つの追加の呼び出しがあるため、scalignと中央揃えの両方が単一のアクションとして「取り消されます」-残りのコードは、GIMPに関数を登録するために必要な定型文です

13
jsbueno

その機能は、何らかの理由でgimpに含まれていません。スクリプトを使用しない代替策は次のとおりです。

Layer -> Scale Layer
16
Weston Ganger

Image -> Canvasを使用して(必要に応じてレイヤーを中央に配置して)キャンバスを縮小した後、Layer -> Layer to Image Sizeは(画像をスケーリングせずに)トリックを実行しました。これはgimp 2.8.16で

8
duanev

GIMP 2.10以降、これはGIMPのLayer -> Layer to Image Sizeの下にデフォルトで含まれています

0
setholopolus
  1. ツールボックスでスケールレイヤーを選択します
  2. 拡大縮小する画像/レイヤーをクリックします
  3. レイヤーの左側のオプションで、レイヤー/パスの代わりに選択を選択します
  4. 次に、スケールのサイズを変更します。
  5. サイズ変更が完了したら、[OK]を選択します。
  6. 画像を右クリックして、[画像]> [画像を選択範囲に合わせる]を選択します。
  7. もう一度右クリックして、[レイヤー]> [レイヤーを選択範囲に合わせる]を選択します。
0
Denshio