簡體   English   中英

將位圖轉換為ASP.NET的圖像

[英]convert bitmap to image for 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;

我現在遇到的問題是圖像未顯示在瀏覽器中,我不明白為什么。

就像jmaglasang所說的那樣,我建議您使用ashx文件,如果不需要保留圖像,只需將圖像流直接發送到http而不將其保存在磁盤上

所以你只需要做類似的事情

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

查看此代碼以獲取有關如何發送驅動器中不存在的內存中圖像的示例

BitmapImage的子類,因此無需將Bitmap轉換為Image 已經是...

可能是因為saveImagePath將是無法從瀏覽器訪問的本地路徑(例如c:\\somepath\\aaa.jpg )。 您可能想要設置ImageUrl = "ImagesMerge/aaa.jpg"

在MapPath會給你一個physycal地址,而不是虛擬地址是什么瀏覽器需要獲取到的圖像。

您也可以嘗試:

imgBig.ImageUrl = ResolveUrl(saveImagePath);

編輯:

如果saveImagePath在WebApplication目錄下,則對目錄結構進行一些修改(例如,修改文件,刪除和創建)可能會導致應用程序池回收,一旦達到最大回收數量,應用程序池將被停止,導致“服務器不可用”錯誤。

我建議在單獨的目錄(不在Apps目錄下)中添加/保存/修改圖像,然后創建一個將讀取圖像的處理程序(ASHX),但這只是一個建議。

您可能會忘記設置Response.Headers。 請查看以下示例,該示例顯示了如何創建條形圖圖像,然后將其顯示在屏幕上:

http://www.highoncoding.com/Articles/399_Creating_Bar_Chart_Using__NET_Graphics_API.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM