from gi.repository import Pango
import os
import sys
image = Gimp.get_images()[0]
def find_rc_layer(layers):
for layer in layers:
if type(layer) is Gimp.TextLayer:
text = layer.get_text()
if text is not None and text.strip() == 'RC':
return layer
else:
markup = layer.get_markup()
_, _, text, _ = Pango.parse_markup(markup, -1, '_')
if text.strip() == 'RC':
return layer
elif type(layer) is Gimp.GroupLayer:
child = find_rc_layer(layer.get_children())
if child is not None:
return child
return None
if Gimp.MINOR_VERSION % 2 == 0 and Gimp.MICRO_VERSION % 2 == 0:
rc_layer = find_rc_layer(image.get_layers())
if rc_layer is None:
msg = 'ERROR: a text layer containing the text "RC" is mandatory for RC and stable splash images.'
sys.stderr.write('v' * len(msg) + '\n')
sys.stderr.write(f'{msg}\n')
sys.stderr.write('^' * len(msg) + '\n')
sys.exit(70)
if 'RC' not in Gimp.VERSION:
# This is a stable release (and not a release candidate).
# Drop the mandatory "RC" layer.
image.remove_layer(rc_layer)
procedure = Gimp.get_pdb().lookup_procedure("file-png-export")
config = procedure.create_config()
image.undo_disable()
image.flatten()
if not image.convert_color_profile(None, Gimp.ColorRenderingIntent.RELATIVE_COLORIMETRIC, True):
msg = f'ERROR: converting the image to built-in profile failed: {Gimp.get_pdb().get_last_error()}'
sys.stderr.write('v' * len(msg) + '\n')
sys.stderr.write(f'{msg}\n')
sys.stderr.write('^' * len(msg) + '\n')
sys.exit(70)
if image.get_width() > 1920 or image.get_height() > 1080:
factor = max(image.get_width() / 1920, image.get_height() / 1080)
new_width = image.get_width() / factor
new_height = image.get_height() / factor
image.scale(new_width, new_height)
drawables = image.get_selected_drawables()
config.set_property("image", image)
config.set_property("file", Gio.file_new_for_path("gimp-data/images/gimp-splash.png"))
config.set_property("time", False)
config.set_property("include-color-profile", False)
config.set_property("format", "rgb8")
retval = procedure.run(config)
if retval.index(0) != Gimp.PDBStatusType.SUCCESS:
sys.exit(70)
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland