2012-05-24 20 views
1

我使用以下代碼(信貸給Dolph Larson)在ASP.net服務器上以位圖格式拍攝預製圖像文件,在其上繪製一個字符串並將其保存到服務器上的文件中。在原始代碼中,他將位圖轉儲到OutputStream,但我想將其轉儲到文件中。將文本添加到ASP.net C#中的JPG圖像並保存到服務器上的文件

以下代碼版本成功創建新文件,但是當我打開它時,字符串不會出現在新文件中的圖像上。我想我錯過了一個步驟 - 當我使用bitMapImage.Save(「bitmaptest.jpg」,ImageFormat.Jpeg),我只是重新保存原始而不是修改後的版本?

下面是代碼:

 //Load the Image to be written on. 
     Bitmap bitMapImage = new 
     System.Drawing.Bitmap(Server.MapPath("generic.jpg")); 
     Graphics graphicImage = Graphics.FromImage(bitMapImage); 
     graphicImage.SmoothingMode = SmoothingMode.AntiAlias; 
     graphicImage.DrawString("testing 1 2 3", 
     new Font("Arial", 20, FontStyle.Bold), 
     SystemBrushes.WindowText, new Point(0, 0)); 
     Response.ContentType = "image/jpeg"; 
     bitMapImage.Save("bitmaptest.jpg", ImageFormat.Jpeg); 
     graphicImage.Dispose(); 
     bitMapImage.Dispose(); 

提前感謝!

+0

對我來說,您應該保存圖形的位圖,而不是保存圖像的位圖...換句話說,graphicImage可能會修改它自己的BitmapImage副本,並保存原始圖像。 – Machinarius

回答

2

你的代碼的工作只是精細;你只需要指定路徑,你要保存的圖像:

例子:

//Load the Image to be written on. 
     Bitmap bitMapImage = new 
     System.Drawing.Bitmap((@"c:\\foo\\generic.jpg")); 
     Graphics graphicImage = Graphics.FromImage(bitMapImage); 
     graphicImage.DrawString("testing 1 2 3", 
     new Font("Arial", 20, FontStyle.Bold), 
     SystemBrushes.WindowText, new Point(0, 0)); 
     bitMapImage.Save("c:\\foo\\bitmaptest.jpg", ImageFormat.Jpeg); 
     graphicImage.Dispose(); 
     bitMapImage.Dispose(); 

注意在你的情況,bitMapImage.Save需要如下:bitMapImage.Save(Server.MapPath("~/Images")+"newImage.jpg",ImageFormat.Jpeg);,因爲你正試圖將圖像保存在asp.net應用程序中。我的示例中的~/Images只是您應用中的虛擬目錄Images

+0

它的工作原理!我改變了顏色爲一個堅實的藍色位圖,並有我的文本!杜,正如他們所說。奇怪的是我寫的圖像有一個白色的背景,但文字似乎並沒有出現。也許我的圖片存在一些問題,我會重新保存並重試。 –

+0

工程就像一個魅力!再次感謝。 –

1

是..你要保存相同的圖像。你必須創建一個NE wbitmap並保存: -

Bitmap bitMapNew = Bitmap.FromHbitmap(graphicImage.GetHdc()); 
bitMapNew.Save("bitmaptest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 

,而不是添加您bitMapImage.save的這些行

+0

我得到了錯誤,指出第一行中出現「GDI +中發生的通用錯誤」。我看起來有點上網,聽起來可能是一個錯誤,你以前遇到過嗎? –

+0

它應該是一個問題,你的路徑。閱讀http://stackoverflow.com/questions/6826921/write-text-on-an-image-in-c-sharp –

+0

再次感謝您的幫助和答覆,我將看我是否可以讓它工作。 –

相關問題