2009-10-22 2 views
1

это как мой код теперь посмотрите:преобразования растровых изображений в изображения для 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; 

Проблема у меня сейчас является то, что изображение не отображается в браузере, я не понимаю, почему.

+5

Вы вопрос неясен. Можете ли вы описать свою задачу более подробно? – Restuta

+0

Я хочу объединить .jpg с .png. Результат, который я хочу просмотреть в элементе управления изображениями с моей страницы. – alina

+0

Объединенное изображение Я хочу, чтобы его отображали в теге < – alina

ответ

2

Bitmap является подклассом Image, поэтому нет необходимости конвертировать Bitmap в Image. Это уже ...

2

Возможно, потому что saveImagePath будет локальным путем (например, c:\somepath\aaa.jpg), который недоступен в браузере. Возможно, вы захотите установить ImageUrl = "ImagesMerge/aaa.jpg".

+0

Спасибо, сейчас он работает. :) – alina

0

MapPath предоставит вам физический адрес, а не тот виртуальный адрес, которому браузеру необходимо добраться до изображения.

0

Вы также можете попробовать:

imgBig.ImageUrl = ResolveUrl(saveImagePath); 

EDIT:

Если saveImagePath находится в директории WebApplication, делая некоторые изменения на структуру каталогов т.е. изменения файлов, создания и удаления могут вызвать приложение пул для повторного использования, и как только он достигнет максимального количества циклов утилизации, пул приложений будет остановлен, что приведет к ошибке «Server unavailable».

Я бы предложил добавить/сохранить/изменить изображения в отдельном каталоге (а не в Каталоге приложений), а затем создать обработчик (ASHX), который будет читать изображения, но только совет.

3

как jmaglasang сказал, я хотел бы предложить вам использовать файл ASHx, и если вам не нужно, чтобы сохранить изображение, просто отправить поток изображения непосредственно в HTTP, не сохраняя его на диске

так что вам нужно только, чтобы сделать что-то вроде

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

посмотреть на this code для примера того, как отправить изображение, сделанное в памяти, который не существует на диске

Смежные вопросы