Problème de centrage pour 4 photos (Python)

Lucascivi -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai codé un photomaton pour effectué 4 photos différentes et les disposer sur une page comme ceci

12
34


avec cette ligne:

elif nb == 4:
    os.system("montage *.jpg -tile x2 -geometry +70+90 -resize 45% montage.jpg")


Le problème, c'est que (-geometry +y+x ) déplace les images entre elles depuis l'axe de la page, et moi, j'aimerais les déplacer depuis le bas de la page pour que les 4 image soient en haut de la page et que je puisse mettre un texte en bas.

Est-ce que quelqu'un à une idée ?

Merci
A voir également:

1 réponse

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Bonjour,

Sans spécifier ce qu'est le programme "montage" auquel ton script python fait appel, on ne peut pas trop répondre. Une manière de procéder seraient d'organiser tes images dans une page web, que tu pourrais alors ouvrir et imprimer depuis ton navigateur. Cela aurait en plus l'avantage de ne pas dépendre du programme
montage
.

Tu peux par exemple t'inspirer de cet exemple. Afin d'avoir des images qui rentrent dans la page, on force leur largeur comme expliqué dans cette discussion :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

TEMPATE_HTML = """
<!DOCTYPE html>
<html>
<head>
<style>
.grid-container {
    display: grid;
    grid-template-columns: %(grid_template_columns)s;
    width: 50%%;
    padding: 10px;
}

img.scaled {
  width: 100%%;
  height: auto;
}

.grid-item {
    padding: 20px;
    text-align: center;
}
</style>
</head>
<body>

<div class="grid-container">
%(div_images)s
</div>
%(text)s
</body>
</html>
"""

def make_montage(image_filenames, text = "", num_columns = 2):
    grid_template_columns = " ".join(["auto"] * num_columns)
    div_images = "\n".join(
        f"<div class=\"grid-item\"><img class=\"scaled\" src=\"{image_filename}\"/></div>"
        for image_filename in image_filenames
    )
    return TEMPATE_HTML % {
        "grid_template_columns" : grid_template_columns,
        "div_images" : div_images,
        "text" : text
    }

filename = "montage.html"
with open(filename, "w") as f:
    image_filenames = [
        "/home/mando/Downloads/image1.gif",
        "/home/mando/Downloads/image2.gif",
        "/home/mando/Downloads/image3.gif",
        "/home/mando/Downloads/image1.gif",
    ]
    print(
        make_montage(image_filenames, "bonjour", num_columns = 2),
        file = f
    )


Ce programme crée lorsqu'il est exécuté le fichier
montage.html
, qui dispose 4 images et écrit en dessous "bonjour".

Bonne chance
0
Lucascivi
 
Salut, c'est monté avec Imagemagick. Merci de ta réponse
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882 > Lucascivi
 
Bonjour,

Vu ce que tu veux faire, je pense que faire un fichier HTML comme je te le préconise dans mon message sera plus pratique à terme :
  • Cela te permet de faire la mise en page que tu veux pour peux que tu maîtrises un peu le CSS (ou que tu cherches vite fait comment ça marche)
  • Cela t'évite de générer des fichiers image qui prennent de la place sur ton disque et qui ne servent que le temps du montage.


Si tu préfères passer par ImageMagick, alors ta question n'est pas vraiment une question python, mais plus une question sur comment utiliser ImageMagick et tu peux chercher des tutoriels qui expliquent comment faire une grille avec ce logiciel, par exemple cette page.

Bonne chance
0