J'ai une DLL qui va retourner un objet (bitmap) et je dois le passer au navigateur. Tout en mémoire, pas d'accès au disque. Je sais comment le faire avec asp.net webform mais je n'ai aucune idée de MVC.si vous avez une DLL créant un bitmap en mémoire, comment le renvoyer au navigateur?
avec formulaire en ligne,
depuis que j'ai le contrôle de la dll, je hériter de la classe avec le webcontrol.image.
dans la page ASPX je créer un lien simple img comme:
<img src="Handler1.ashx>
dans le Handler1.ashx je code comme:
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.Clear()
Dim bmp As Bitmap = Nothing
Dim dll As New myDll.Class
dll.drawPicture(bmp)
context.Response.ContentType = "image/jpeg"
bmp.Save(context.Response.OutputStream, ImageFormat.Jpeg)
context.Response.End()
End Sub
(j'ai enlevé les trucs de nettoyage/code inutile de garder court)
modifier
solutionest
Function img() As FileResult
Dim bmp As Bitmap = Nothing
Dim dll As New myDll.myClass
dll.DrawPicture(bmp)
Dim imgStream As New IO.MemoryStream
bmp.Save(imgStream, ImageFormat.Png)
imgStream.Position = 0
bmp.Dispose()
dll.Dispose()
bmp = Nothing
dll = Nothing
Return File(imgStream.ToArray, "image/png")
End Function
Je n'ai aucun problème en cours d'exécution du code de nettoyage sur tout sauf le MemoryStream, est-il une chance pour un memoryleak là? (Je pense que oui)
Pourriez-vous poster le code que vous utilisez avec WebForms? – CoderDennis
@Dennis Palner, fait – Fredou