调整图层大小以适合画布 - Gimp

jez*_*pin 16 resize gimp image-resizing

我目前正在使用Gimp调整一些图像的大小.我是一名网络开发人员,但我并没有真正使用图像处理软件,因为大部分图像都是由设计师提供的,因此Gimp工具对我来说非常陌生.我查看了Gimp网站上的所有教程和帮助指南,但我找不到最简单问题的答案:

如何在保持纵横比的同时调整图层大小以适应当前画布?

我实际上是在我的Canvas上设置固定大小并将图像作为图层导入到我的项目中.我当时希望做的是将这个大得多的图像向下缩放,以便在保留宽高比的情况下适合Canvas.我找到了一种缩放Canvas以适应图层的方法,但这不是我想要的.

任何帮助将不胜感激.

Wes*_*ger 13

由于某些原因,该功能不在gimp中.没有任何脚本的替代方案是:

Layer -> Scale Layer
Run Code Online (Sandbox Code Playgroud)

  • 这。是。这。真实的。解决方案 (4认同)

jsb*_*eno 12

这很容易做到,但是在程序UI中可以选择的数百个选项中,它并没有"当选".

出路是使用程序的脚本功能来执行动作:必须先确定的是图像/层的比例在宽度或高度上是否较大,并使用此比率来缩放图层,然后使用这层.

为了您的方便,我在一行中为此编写了一些Python代码,您可以在python控制台(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)
Run Code Online (Sandbox Code Playgroud)

由于这可以完成,但是不实用,甚至更多,因为它不允许你选择图像或图层来调整大小,我也将其格式化为GIMP的python脚本.只需检查插件目录的edit-> preferences-> folders->插件,然后将内容粘贴为文件(如果在Windows上,文件必须具有".py"扩展名.在Linux和Mac上操作系统,任何扩展都可以工作,但你必须给文件"exectuable"属性").

重新启动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="<Image>/Layer/",
    )

main()
Run Code Online (Sandbox Code Playgroud)

注意它与上面的代码相同,但是当从菜单中选择动作时,GIMP现在提供"img"和"layer",并且有两个额外的调用,以便scalign和居中作为单个动作"撤消" - 剩下的代码只是用于向GIMP注册功能的锅炉板


dua*_*nev 8

在使用Image -> Canvas(并根据需要使图层居中)缩小我的画布之后,Layer -> Layer to Image Size完成了技巧(没有缩放图像).这是与gimp 2.8.16