2010-04-27 12 views
0

Je reçois une image dynamique sous la forme d'un tableau d'octets. et je veux montrer que dans la page Web, de préférence ImageControlcontrôle d'image dynamique

Je suis conscient de la méthode de création de gestionnaire http et d'obtention de flux d'image. mais je ne peux pas le faire ici car la logique pour le même est effectuée ailleurs.

Impossible d'obtenir un moyen approprié pour cela.

Merci d'avance.

Répondre

0

Enfin j'ai pris l'approche du milieu.

J'ai un objet image dans le code derrière. Pour shwoing que dans la page Web principale. J'ajoute cet objet dans le cache avec une clé aléatoire (dans mon cas GUID)

Ensuite, je génère une URL telle que ~/GetImage.ashx? Id = [GUID]

Lorsque cette URL est accessible, une image du cache sera stockée.

Note:

  1. J'ajoute l'image en cache avec l'auto expiration définie à 2 minutes absolues. pour s'assurer que le cache sera vide sans intervention manuelle et qu'il y a suffisamment de temps pour qu'un autre traitement se produise.
  2. Utilisé Cache sur Session pour la même raison mentionnée au point 2, où il se peut que je doive l'enlever manuellement.

Bien sûr, je suis toujours ouvert pour une meilleure solution.

+0

Que faire si l'utilisateur met plus de 2 minutes pour charger la page? Les appareils mobiles «suspendent» souvent le chargement lorsque vous passez à une application différente, ce qui empêche les images d'être disponibles lorsque le chargement reprend. [Il existe des httpmodules pour le traitement dynamique de l'image] (http://imageresizing.net), si c'est ce que vous faites. –

+0

httpmodule mentionné est le redimensionnement des images déjà présentes. Ici nous avions affaire à Image Object en memnory. Dans l'application, je reçois l'objet Image à partir du traitement et doit être affiché dans Image Control. Mon application actuelle ne permet pas de stocker l'image en tant que fichier, donc ne peut pas donner le chemin directement. Si cela avait été autorisé, je pourrais directement donner le chemin et enlever l'image après une longue durée. Garder l'image cache est cher donc j'ai dû supprimer après un intervalle défini. Vous pouvez modifier l'intervalle selon les besoins de l'application. – BigBoss

+0

En fait, [le httpmodule] (http://imageresizing.net) n'exige pas que les images soient physiquement présentes. Vous pouvez implémenter une interface à 2 méthodes (IVirtualImageProvider) et lui passer les fichiers virtuels à la fantaisie. Mais pour vous aider à trouver la meilleure solution, nous avons besoin de plus de détails sur l'origine des images. –

0

Vous pouvez toujours convertir votre tableau d'octets en flux dans votre gestionnaire et envoyer les octets normalement. Voici un bon article sur la façon de le faire: Creating a byte array from a stream

+0

Oui, cela va convertir un tableau d'octets en flux d'images et peut être dans un objet image mais comment l'afficher dans une page Web et comment l'assigner au contrôle Image lorsqu'il prend l'URL de l'image. – BigBoss

+0

Ce processus est bien documenté ici: http://stackoverflow.com/questions/887985/create-png-image-with-c-httphandler-webservice – cortijon

+0

Je suppose que j'ai besoin de mieux l'expliquer. J'ai déjà un tableau d'octets ou laisse dire un objet d'image. maintenant je dois montrer cette image dans ImageControl dans la page Web. Je ne pouvais pas utiliser HttpHandler comme basique, je pourrais avoir à passer l'image entière comme chaîne de requête. – BigBoss