调整图像大小以适应画布 - Gimp

调整图像大小以适应画布 - Gimp

这很容易做到,但在数百个可能放在程序UI上的选项中,它没有被“选中”。

解决方法是使用程序的脚本能力来执行操作:

需要以编程方式确定图像/图层的比例是宽还是高,并使用此比例缩放该图层,然后将图层居中。

为了方便起见,我用一行Python代码编写了这个功能,您可以将其复制并粘贴到Python控制台(过滤器->python->控制台)中,在最近打开的图像的顶部图层上应用该效果。

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脚本。

只需检查您的“编辑”->“首选项”->“文件夹”->“插件”以获取您的插件目录,将下面的内容粘贴为一个文件(如果在Windows上,则该文件必须具有“.py”扩展名。 在Linux和Mac OS上,任何扩展名都可以使用,但您必须赋予该文件“可执行”属性)。

重新启动GIMP后,您将在“图层”菜单上方便地找到新命令:

#! /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="/Layer/",

)

main()

请注意,这段代码与上面的代码相同,但是现在从菜单中选择操作时,“img”和“layer”现在由GIMP提供,并且有两个额外的调用,以便缩放和居中都作为一个单独的操作“撤消” - 剩下的代码只是必要的样板文件,用于在GIMP中注册功能。

🔍 相关推荐