2013-03-19 3 views
0

J'ai 100 objet BufferedImage dans ArrayList, je veux montrer toutes ces images dans un jsp.Afficher plusieurs BufferedImage en jsp

<% 
    ArrayList<BufferedImage> list = GlobalData.getImageBufferArrayList(); 
%> 

</head> 
<body> 
<ul> 
<li><img alt="" src=""> </li>//image1 
<li><img alt="" src=""> </li>//image2 
<li><img alt="" src=""> </li>//image3 
    ... 
    .. 
    ... 
</ul> 
</body> 

Je ne sais pas quoi mettre dans src sur ces images

Est-il possible de mettre les données d'image comme src de l'image. (Comme nous obtenons des données d'image à partir canvas en html)

Ou est leur façon décente de montrer ces images.

+0

vous pouvez enregistrer les noms de images/chemins sur tableau de chaînes, puis dans une boucle « for » il suffit d'écrire

  • Elior

    +0

    je n'ai pas les images sur le disque – JAVAGeek

    +1

    vous avez besoin d'un servlet distinct qui a une image de type de contenu d'en-tête/png ou jpg ou gif. cette servlet obtient une image tamponnée et la sort. dans chaque attribut src, laissez src = 'servlet? img = NUMBER' où NUMBER est l'indice de chaque image dans l'arborescence. – user1406062

    Répondre

    1

    Vous devez incorporer les fichiers image dans le document HTML ou les rendre disponibles via des requêtes HTTP distinctes. Pour le premier, vous pouvez utiliser le data: URI scheme. Pour ce dernier, vous devez fournir une servlet séparée, ou un chemin de code séparé à l'intérieur de cette même servlet, qui servira le fichier image. Il peut le faire à partir d'un cache de courte durée, vous n'aurez donc plus besoin d'exécuter le même code pour obtenir ces images.

    En général, l'incorporation des données a un surdébit de taille proportionnel à la taille de l'image, tandis que les demandes séparées ont un surdébit de ressources proportionnel au nombre de requêtes HTTP. Pour les petites images, le premier peut être meilleur, alors que pour les grandes images, ce dernier sera plus rapide. La mise en œuvre de l'intégration devrait être plus facile que la mise en œuvre d'un cache d'image raisonnable, mais je ne suis pas sûr à 100% que tous les navigateurs prennent en charge le schéma de données.

    Dans les deux cas, vous aurez à la sérialisation BufferedImage à une séquence d'octets d'abord, en utilisant probablement ImageIO.write en conjonction avec un ByteArrayOutputStream.