Afficher un Tif dans un navigateur
L’autre jour j’ai eu la problématique suivante : comment afficher un Tif dans un navigateur web ?
Le problème est que les navigateurs respectent (en tout cas essayent) les normes du W3C et donc ne savent afficher que les Jpeg, les Gif et les Png (et encore, IE a du mal). Voici une solution :
L’idée est de lire un fichier Tif, le convertir en autre chose de lisible par le navigateur et enfin d’écrire cet autre chose dans le stream de réponse du serveur. Evidement, la solution que je propose est en Java.
Je me suis inspiré de ce TechTip (comment ça, encore?).
Etape 1 : JSP
On commence par la jsp d’appel :
1 | <a href="/servlet/tiffServlet?url=<%= tifEncodedUrl %>" >toto.tif</a> |
Etape 2: les imports
Je n’ai mis que les plus importants
1 | import java.awt.Canvas; |
Etape 3 : lire un fichier Tif
Pour ce faire, je me suis appuyer sur la librairie Tiff de Lizzard Works.
1 | // hop, on récupère le paramètre depuis la jsp |
Ici, j’ai choisi d’aller chercher un Tif distant. Rien n’empèche de récupérer un stream sur un resource locale.
Etape 4 : Convertir le fichier Tif en Png
C’est là que réside l’astuce. Même si on est en environnement Servlet, on a accès aux bibliothèques Swing et Awt de la JVM ;-)
1 | // Objet Image d'awt |
Etape 5 : tout le monde est content
Rien n’empèche d’ajouter du LightBox dans la jsp, en tout cas, on va chercher un Tif et le navigateur affiche un Png. Magique non?
Voici mes sources :