Eviter les bandes noires quand on redimensionne une image
Le problème
Il arrive qu'on veuille utiliser une image comme papier-peint de bureau ou comme économiseur d'écran.
Mais le problème est que les images ont parfois des dimensions très différentes de celles de l'écran.
Par exemple, avec cette image:
(Photo par rich115 en licence CC)
Une fois convertie en 1280x1024, il nous reste de grandes bandes noires. Dommage, non ?
Avec un petit script, on peut redimensionner l'image, mais en remplissant les bandes noires avec une partie de l'image elle-même.
Le résultat est plus sympathique:
Comment ?
1) Téléchargez et installez ImageMagick
(Sous Windows, c'est ImageMagick-6.x.x-x-Q16-windows-dll.exe qu'il faut télécharger.)
2) Créez le script nicefit.bat contenant:
@echo off @rem nicefit.bat - Nicely fit images to a resolution, replacing black stripes with colors matching the image and add a smooth shadow. @rem License: This batch is in public domain, but the author would appreciate the credits (http://sebsauvage.net). @rem Requirement: This program requires ImageMagick 6.x or later. @rem Syntax: nicefit.bat filename width height outputfilename @rem Example: nicefit.bat myimage.jpg 1280 1024 result.bmp SETLOCAL set filename=%1 set width=%2 set height=%3 set outputfilename=%4 convert ( ( %filename% -gravity Center -crop "80x80%%+0+0" -resize "%width%x" +repage -crop "%width%x%height%+0+0" -resize "x%height%" +repage -crop "%width%x%height%+0+0" -blur 0x40 +repage ) ( %filename% -resize %width%x%height% -matte -background black -shadow 100x16 ) -gravity Center -composite ) ( %filename% -resize %width%x%height% ) -composite -flatten +repage -strip -quality 80 %outputfilename%
3) Convertissez l'image en utilisant le script:
nicefit photo.jpg 1280 1024 resultat.jpg
Et voilà !
Autres exemples
(Image par Rebecca_bexxi sous license CC)
(Image par peppers sous licence CC)
(Image par Immanuel Giel sous licence CC)
Note
Note: Ce script devrait être adaptable sans problème pour bash.