Подтвердить что ты не робот

Измените размер слоя в соответствии с холстом - Gimp

В настоящее время я использую Gimp для изменения размера некоторых изображений. Я веб-разработчик, но я действительно не использую программное обеспечение для обработки изображений, так как большинство изображений предоставляются дизайнерами, поэтому инструмент Gimp мне незнакомо. Я просмотрел все руководства и справочники по сайту Gimp, но не могу найти ответ на самый простой вопрос:

Как вы изменяете размер слоя в соответствии с текущим холстом, сохраняя соотношение сторон?

Я по существу устанавливаю фиксированный размер на моем холсте и импортирую изображение в качестве слоя в свой проект. То, что я тогда желаю сделать, - это масштабировать это намного большее изображение вниз, чтобы оно могло вписываться в холст с сохраненным соотношением сторон. Я нашел способ масштабирования Canvas, чтобы соответствовать слою, но это не то, что я ищу.

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Это легко сделать, но среди сотен возможных вариантов, которые нужно поместить в пользовательский интерфейс программы, он не был "избран" там.

Выход из программы заключается в использовании возможностей сценариев для выполнения действий: что должно определяться программно, является ли отношение изображения/слоя больше по ширине или высоте, и используйте это соотношение для масштабирования слоя, а затем центрируйте слой.

Для вашего удобства я написал код 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)

Так как это можно сделать, но не практично, тем более, что это не позволяет вам выберите изображение или слой для изменения размера, я сформировал его как python - script для GIMP. Просто проверьте настройки edit- > preferences- > folders- > плагинов для своего каталога плагинов, вставьте содержимое ниже в файл (если в Windows файл должен иметь расширение ".py". В Linux и Mac OS любое расширение будет работать, но вы должны предоставить файл "exectuable" свойство ").

После перезапуска 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 при выборе действия из меню, и есть два дополнительных вызова, чтобы как масштабирование, так и центрирование "отменены" как одно действие - оставшийся код - это только толкаемая плита котла для регистрации функция с GIMP

Ответ 2

По какой-то причине эта функция не находится в gimp. Альтернатива без каких-либо скриптов:

Layer -> Scale Layer

Ответ 3

После сжатия моего холста с помощью Image -> Canvas (и центрирования слоев по желанию) Layer -> Layer to Image Size выполнил трюк (без масштабирования изображения). Это с gimp 2.8.16