Python/Script-python-fu-taille image

Révision datée du 27 janvier 2021 à 10:11 par Fylip22 (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche
#!/usr/bin/env python

import math
from gimpfu import *

def lazy_scale_image(timg, tdrawable, max_width, max_height):
    print "max width: %s\nmax height: %s" % (max_width, max_height)
    width = tdrawable.width
    height = tdrawable.height

    if max_width <= 0:
        # Assume width is okay as it is
        max_width = width
    if max_height <= 0:
        # Assume height is okay
        max_height= height

    if width <= max_width and height <= max_height:
        print "Nothing to do, returning"
        return

    image_aspect    = float(width) / float(height)
    boundary_aspect = float(max_width) / float(max_height)
    if image_aspect > boundary_aspect:
        # Width is the limiting factor:
        new_width = max_width
        new_height= int(round(  new_width/image_aspect ))
    else:
        # Height is the limiting factor:
        new_height = max_height
        new_width = int(round(  image_aspect*new_height  ))

    print "Resizing %s:%s to %s:%s" % (width, height, new_width, new_height)

    # At present, documentation does not specify the interpolation--
    # another tutorial claimed it was cubic:
    pdb.gimp_image_scale(timg, new_width, new_height)

register(
        "lazy_scale_image",
        "Redimensionne l'image",
        "Scale the specified image so that it is no larger than the given dimensions",
        "Daniel Zwell",
        "Daniel Zwell",
        "2008",
        "<Image>/_Extensions/_Taille image",
        "RGB*, GRAY*",
        [
                (PF_INT, "max_width", "Largeur maximum", 1280),
                (PF_INT, "max_height", "Hauteur maximum", 900),
        ],
        [],
        lazy_scale_image)

main()