Logiciel de compression d'image

Oh cool merci Xerto. Bon du coup je vais quand même essayer de mettre en place ta solution maintenant que tu t’es donné tout ce mal.

je dirais que non, mais faudrait voir la signature de l’algorithme de compression du JPG.

Génial, ça marche super bien ! J’ai même réussi à ajouter un paramétrage pour changer la résolution. En revanche, je ne sais pas si c’est la bonne manière de faire. Les paramètres de base :

# --- Parameters for the compression ---
path_to_caesiumclt_exe = "C:\\Users\\Kip\\Documents\\caesiumclt\\caesiumclt.exe"
folder_to_watch = "C:\\Users\\Kip\\Desktop\\pythontest"
compress_existing_images = False  # Can be True or False
compression_factor = 70  # 0 = lossless, 80 most common
scale_factor = 0.5 # scale the image to a factor
wait_time_between_checks = 2  # seconds
# --- Don't modify anything beyond this point ---

Et j’ai modifié cette ligne :
cmd_line = '{} -q {} -e -s {} -o "{}" "{}"'.format(path_to_caesiumclt_exe, compression_factor, scale_factor, folder_to_watch, f)

En cherchant, j’ai réussi à ce que le script se lance au démarrage de Windows en mettant un raccourci du script dans ce dossier : C:\Users\Kip\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup. Pareil, je ne sais pas si c’est la bonne méthode, j’imagine qu’il y a plus propre, peut-être même directement via le script.

Sinon je bute sur un dernier problème : faire en sorte que le script une fois lancé au démarrage, se mette dans la zone de notification avec une petite icône. Après quelques c/c sauvages de code et autant d’échecs, j’ai cru comprendre que ce n’est pas aussi simple et qu’il faudrait installer un module pour permettre à Python de réaliser cette manipulation ?

Alors ça c’est une autre ligue que ce que tu as demandé au départ :slight_smile: Aucune idée de comment faire ça, ça risque d’être un poil complexe.

Ça a l’air oui. En fait je veux juste que la fenêtre dans laquelle s’exécute le script se réduise quelque part (même la barre des tâches serait très bien), voire ne s’affiche pas du tout lors du lancement. Je vais continuer à chercher, merci encore pour ton script !

Je pense qu’à moins d’utiliser une API de Windows cela ne soit pas possible.

Il est peut-être possible de démarrer le script en minimisé, pour cela il faudrait voir les propriétés du script (bouton droit sur l’icône dans le menu démarrer).

Démarrer en minimisé ce serait top oui. Quand je cherche des infos sur les icônes de notification, je tombe sur des choses à installer pour compléter Python mais je m’y connais pas assez pour bien comprendre de quoi il s’agit et comment le tout fonctionne. Exemple avec ça :

Mais il y en a d’autres et ici.

Il fait utiliser pyinstaller pour transformer le script en programme et qui puisse apparaître dans la taskbar.

C’est la solution bourine, qqun a peut-être mieux à proposer :sweat_smile:

Oui, bourrine mais ça marche :smiley:

Bon, j’ai compris ce qu’était un package Python et j’ai installé Py2exe pour créer un exe du script. Ça a été un peu compliqué mais j’ai fini par générer un exe qui fonctionne.

Je bute sur un dernier souci : en créant un raccourci de l’exe et en sélectionnant « Réduite » dans ses propriétés, l’exe se lance en minimisé dans la barre des tâches. C’est bien mais je le veux dans la zone de notifications et impossible de trouver comment faire. Une idée ?

Dans settings, tu as un menu taskbar avec une option « Select which icons appears on the taskbar »

Pas sûr que ton app soit dans la liste par contre

Elle n’est y pas, effectivement. En même temps, c’est pas une application installée donc j’imagine que Windows ne la voit pas.

T’as essayé RBTray ou d’autre soft dans le genre ?

J’ai vu pas mal de trucs du genre (Trayconizer aussi) mais l’idée c’est d’essayer de trouver une solution sans rajouter des soft tiers.

A voir : https://stackoverflow.com/questions/17200167/minimise-python-to-system-tray-and-generate-notifications

Je n’ai pas essayé, mais on dirait que ça pourrait correspondre (donc effectivement, un appel à une API de Windows via SysTrayIcon.py)

Edit 2 : tiens encore une autre façon : https://github.com/Infinidat/infi.systray

Ok, j’arrive à avoir une icône dans la zone de notification avec infi.systray, sauf que la fenêtre de commande du script reste ouverte. Pour cacher cette fenêtre, j’ai trouvé une astuce à mon avis pas très catholique mais ça marche : passer le script en .pyw (au pieu de .py) pour que la fenêtre de commande ne s’affiche plus. Tout fonctionne ! Sauf que maintenant, dès qu’une image est ajoutée au dossier, j’ai désormais la fenêtre de CaesiumCLT qui s’ouvre brièvement le temps de la compression… En .py cette fenêtre ne s’affiche pas. Comment éviter ça ?

Pour ne pas avoir de console, quand tu lances ton script tu peux utiliser pythonw.exe à la place de python.exe

@Kip
Et le traitement par lots d’Irfan View ?

en interactif

en ligne de commande

1 « J'aime »

Ou de xnview et nconvert. Same shit.

Ah oui, oui, mais le monsieur a demandé que cela soit fait sur un « dossier surveillé »…

Donc il y a de fortes chances qu’un script doit être utilisé.