2010-10-22 3 views
0

Je travaille sur la création d'un serveur HTTP simple dans le cadre d'un serveur Java. Un composant de ce serveur Java consiste à capturer des images en direct à partir d'une webcam. Actuellement, je suis en train d'écrire les images sur disque et de les servir via Apache. Ce que je veux faire à la fin, cependant, est d'écrire le JPEG en mémoire dans une liste d'objets JPEG et ensuite avoir un HTTPHandler qui servira l'image appropriée lorsque cela est demandé.En Java 1.6 comment servir un JPEG en mémoire via un HTTPHandler?

Je ne vois aucun moyen clair de le faire. Quelqu'un a des idées?

Voici comment je reçois les images, en utilisant LTI CIVIL comme la bibliothèque de capture - Ceci est de les enregistrer sur le disque - je veux les stocker dans la mémoire:

try 
    { 
    String fileName = "image" + System.currentTimeMillis() + ".jpg"; 

FileOutputStream os = new FileOutputStream(FILE_PATH + fileName); 
final JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(os); 
jpeg.encode(AWTImageConverter.toBufferedImage(image)); 

os.close(); 

log.info("Got image as filename: " + fileName); 
} 
catch (Exception e) 
{ 
log.error("An error occured", e); 
} 

Répondre

1

Si vous utilisez un ByteArrayOutputStream au lieu de un FileOutputStream vous pouvez capturer la sortie, puis appelez toByteArray pour obtenir les données une fois qu'il a fini d'écrire. Pour ce faire, lorsque vous obtenez une requête pour l'image, définissez le type de contenu sur "image/jpeg", définissez la longueur du contenu sur la longueur du tableau d'octets, puis écrivez les octets dans le flux de sortie de la réponse. .

+0

Cela a fonctionné comme un charme, merci. :-) Pour la postérité au cas où quelqu'un voudrait vraiment un exemple de code c'est ce que j'ai fait. –

+0

Supprimé Je suppose que je ne peux pas mettre de code ici ... –

Questions connexes