2009-10-22 5 views
1

c'est ainsi que mon code regarde maintenant:bitmap converti à l'image pour ASP.NET

System.Drawing.Image objImage = System.Drawing.Image.FromFile(Server.MapPath("aaa.jpg")); 

int height = objImage.Height; 
int width = objImage.Width; 

System.Drawing.Bitmap bitmapimage = new System.Drawing.Bitmap(objImage, width, height); 
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmapimage); 
System.Drawing.Image bitmap2 = (System.Drawing.Image)Bitmap.FromFile(Server.MapPath("sem.png")); 

g.DrawImage(bitmap2, (objImage.Width - bitmap2.Width)/2, (objImage.Height - bitmap2.Height)/2); 

MemoryStream stream = new MemoryStream();  
bitmapimage.Save(stream, ImageFormat.Jpeg); 

String saveImagePath = Server.MapPath("ImagesMerge/") + "aaa.jpg"; 
bitmapimage.Save(saveImagePath); 
imgBig.ImageUrl = saveImagePath; 

Le problème que j'ai maintenant que l'image ne soit pas affichée dans le navigateur, je ne comprends pas pourquoi.

+5

Vous question ne sait pas. Pouvez-vous décrire votre tâche en plus de détails? – Restuta

+0

Je veux fusionner un .jpg avec un .png. Le résultat que je veux être affiché dans un contrôle d'image de ma page. – alina

+0

L'image fusionnée que je veux afficher dans une balise d'image < – alina

Répondre

2

Bitmap est une sous-classe de Image, il n'y a donc pas besoin de convertir Bitmap en Image. Il est déjà ...

2

Probablement parce que saveImagePath sera un chemin local (tel que c:\somepath\aaa.jpg) qui n'est pas accessible depuis le navigateur. Vous voulez probablement définir le ImageUrl = "ImagesMerge/aaa.jpg" à la place.

+0

Merci, ça marche maintenant. :) – alina

0

MapPath vous donnera une adresse physycal, pas une adresse virtuelle qui est ce que le navigateur doit obtenir pour l'image.

0

Vous pouvez aussi essayer:

imgBig.ImageUrl = ResolveUrl(saveImagePath); 

EDIT:

Si saveImagePath est sous le Directoire WebApplication, faire quelques modifications sur la structure de répertoire, par exemple la modification des fichiers, la suppression et la création peut provoquer l'application pool à recycler, et une fois qu'il atteint le nombre maximal de recyclages, le pool d'applications sera arrêté, provoquant une erreur "Serveur indisponible".

Je suggère d'ajouter/enregistrer/modifier des images sur un répertoire séparé (pas sous le répertoire Apps) puis créer un gestionnaire (ASHX) qui va lire les images, juste un conseil cependant.

3

comme jmaglasang dit, je vous suggère d'utiliser un fichier ashx et si vous n'avez pas besoin de garder l'image, il suffit d'envoyer le flux d'images directement au http sans l'enregistrer sur le disque

donc il vous suffit de faire quelque chose comme

 <img src="Handler.ashx?action=merge&image1=blah.jpg&image2=bloh.jpg"> 

regard sur this code pour un exemple de la façon d'envoyer une image faite en mémoire qui n'existe pas sur le lecteur

Questions connexes