以下代码用于将图层与底部背景图层对齐。
import os
from gimpfu import *
import gimpfu
import logging
def scale(logo, tdrawable, imageName):
logger = logging.getLogger()
logger.info('got logo file {0}'.format(imageName))
newImage = pdb.gimp_image_new(450, 300, RGB)
newLayer = pdb.gimp_layer_new(newImage, 450, 300, 0, "background", 100.0, NORMAL_MODE)
pdb.gimp_context_set_background((255, 255, 255))
# pdb.gimp_context_set_foreground((255, 255, 255))
pdb.gimp_drawable_fill(newLayer, gimpfu.BACKGROUND_FILL)
logger.info('Created new background image {0}')
newImage.add_layer(newLayer, 0)
logger.info('loading logo {0}'.format(imageName))
logo = pdb.gimp_file_load(imageName, imageName)
visibleLayer = pdb.gimp_layer_new_from_visible(logo, newImage, 'logo')
pdb.gimp_image_add_layer(newImage, visibleLayer, 0)
logger.info('Scaling logo to 435 width')
pdb.gimp_layer_scale(visibleLayer, 435, 100, True)
# logger.info('Align logo to background image')
pdb.plug_in_align_layers(newImage, tdrawable, True, True)
flattenedLayer = pdb.gimp_image_flatten(newImage)
fileNameNoExt = os.path.splitext(imageName)[0]
pdb.file_jpeg_save(newImage, flattenedLayer, fileNameNoExt + '.jpg', fileNameNoExt + '.jpg', 1.0, 0.0, 1, 1, '', 0, 0, 0, 0)
register(
"scale_logo",
"Exports logo in jpeg format after custom scaling",
"Exports logo in jpeg format after custom scaling",
"",
"",
"2017",
"<Image>/Image/Scale logo...",
"RGB*, GRAY*",
[
(PF_STRING, 'file_name', 'file_name', 'logo.png')],
[],
scale)
main()
预期的行pdb.gimp_layer_scale(visibleLayer, 435, 100, True)
来完成这项工作,但生成的文件在背景白色层的左上角包含徽标层。如何正确地将图层与底部背景图层对齐?
以下解决方案对我有用。感谢xenoid在评论中的建议
import os
from gimpfu import *
import gimpfu
import logging
def scale(logo, tdrawable, imageName):
logger = logging.getLogger()
logger.info('got logo file {0}'.format(imageName))
newImage = pdb.gimp_image_new(450, 300, RGB)
newLayer = pdb.gimp_layer_new(newImage, 450, 300, 0, "background", 100.0, NORMAL_MODE)
pdb.gimp_context_set_background((255, 255, 255))
pdb.gimp_drawable_fill(newLayer, gimpfu.BACKGROUND_FILL)
logger.info('Created new background image {0}')
newImage.add_layer(newLayer, 0)
logger.info('loading logo {0}'.format(imageName))
logo = pdb.gimp_file_load(imageName, imageName)
visibleLayer = pdb.gimp_layer_new_from_visible(logo, newImage, 'logo')
pdb.gimp_image_add_layer(newImage, visibleLayer, 0)
logger.info('Scaling logo to 435 width, 100 height')
pdb.gimp_layer_scale(visibleLayer, 435, 100, True)
logger.info('Align logo to background image')
offx = (newLayer.width - visibleLayer.width) / 2
offy = (newLayer.height - visibleLayer.height) / 2
pdb.gimp_layer_set_offsets(visibleLayer, offx, offy)
logger.info('Sharpening logo')
pdb.plug_in_unsharp_mask(None, visibleLayer, 100.0, 0.5, 0)
logger.info('Flatten all visible layers into a single layer')
flattenedLayer = pdb.gimp_image_flatten(newImage)
fileNameNoExt = os.path.splitext(imageName)[0]
pdb.file_jpeg_save(newImage, flattenedLayer, fileNameNoExt + '.jpg', fileNameNoExt + '.jpg', 1.0, 0.0, 1, 1, '', 0, 0, 0, 0)
register(
"scale_logo",
"Exports logo in jpeg format after custom scaling",
"Exports logo in jpeg format after custom scaling",
"",
"",
"2017",
"<Image>/Image/Scale logo...",
"RGB*, GRAY*",
[
(PF_STRING, 'file_name', 'file_name', 'logo.png')],
[],
scale)
main()
要运行它,需要使用以下 bash 命令序列:
cp scaleAndSharpenLogo.py /usr/lib/gimp/2.0/plug-ins/scaleAndSharpenLogo.py; gimp --no-interface -b '(python-fu-scale-logo RUN-NONINTERACTIVE 0 0 "logo.png")' -b '(gimp-quit 0)'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句