Supprimer la bordure blanche d’une image EPS en modifiant la BoundingBox
Lorsque l'on exporte une image au format .eps il arrive qu'un cadre blanc, une bordure blanche, entoure l'image que l'on visualise (dans mon cas avec le lecteur Aperçu de Mac OS X). Par exemple, cette image générée à partir de Matlab :
figure; imagesc(monimage); colormap gray; axis image; set(gca,'xtick',[],'ytick',[]); set(gcf,'color','w');
Si on l'enregistre simplement à partir de "save..." voilà ce qu'on visualise :
Insérer cette image dans un fichier TeX serait esthétiquement mauvais du fait du gaspillage de place important imposé par cette bordure !
Qu'à cela ne tienne, il existe des solutions dans Matlab pour réduire fortement cette bordure, notamment print et export_fig pour ne citer qu'elles. La première ne nécessite aucun téléchargement supplémentaire, donc allons-y :
figure; imagesc(monimage); colormap gray; axis image; set(gca,'xtick',[],'ytick',[]); set(gcf,'color','w'); print -depsc -r300 monimage.eps % ou bien export_fig('monimage.eps');
Visualisation le résultat :
C'est mieux, mais il subsiste toujours une fine bordure blanche !
Alors comment procéder ?Je vous propose quatre solutions :
- Modifier manuellement la BoundingBox de monimage.eps :
Pour connaître ses dimensions tapez la commande suivante dans un terminal (dans le répertoire contenant votre image).
gs -dNOPAUSE -dBATCH -q -sDEVICE=bbox monimage.eps
Cela devrait vous renvoyer quelque chose comme :
%%BoundingBox: 3 0 346 343 %%HiResBoundingBox: 3.240000 0.486000 345.599989 342.758943
Cela signifie que vous devez remplacer les coordonnées de la première ligne par celles calculées dans la seconde dans le fichier monimage.eps. Pour cela ouvrez monimage.eps en mode texte (pour ma part je l'ouvre avec TextEdit) et modifier les coordonnées de BoundingBox :
- Modifier automatiquement la BoundingBox à partir d'Epstool
Tapez dans le terminal :
epstool --copy --bbox monimage.eps monimagecorrigee.eps
Bien sûr il faut avoir au préalable installer epstool sur sa machine. Sous Unix (Linux, Mac) on peut le faire simplement grâce à brew :
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null brew install epstool
Remarque : avec la dernière mise à jour de Mac "El Capitan" les permissions d'écriture dans les répertoires usr/, System/ et bin/ sont plus restrictives si vous n'êtes pas en root. Pour obtenir l'autorisation tapez la commande suivante :
sudo chown -R $(whoami):admin /usr/local
- Modifier automatiquement la BoundingBox avec ps2epsi
Cette solution, fournie par Ghostscript, est certainement la plus simple :
ps2epsi monimage.eps monimagecorrigee.eps
---
Dans les trois solutions proposées, on obtient la visualisation suivante :
Cette fois la bordure a été (presque) complètement supprimée !
Une quatrième solution consiste à exporter l'image non pas directement en .eps, mais en premier lieu en bitmap sans perte, par exemple au format TIFF, puis de convertir cette image en .eps via la commande tif2eps.
- Ecrire l'image au format .tif :
imwrite(uint8(image),'image.tif')
- Installation de tif2eps :
Télécharger l'archive à cette adresse. Elle comporte 3 fichiers : tif2eps, tif2eps.bat et tif2eps.ps. Copier les deux premiers dans le dossier de votre PATH système. Pour savoir où cela se situe, tapez dans le shell (invite des commandes) :
echo $PATH
qui me renvoie /usr/local/bin/. C'est donc dans ce dossier que je dois copier tif2eps et tif2eps.bat. Enfin le troisième fichier tif2eps.ps doit être copié dans le répertoire suivant : /usr/local/share/ghostscript/<version>/lib/. Vous devez avoir Ghostscript d'installé.
- Convertir l'image TIFF en EPS :
tif2eps image.tif
vous produit un fichier image.eps dont la bordure a été complètement supprimée !