2013-01-04 38 views
1

那麼標題幾乎說明了一切。如果我有像這樣的文件流中的圖像:VB.NET如何重命名MemoryStream中的圖像?

Dim imgStream As MemoryStream = New MemoryStream() 
sd.Save(imgStream, System.Drawing.Imaging.ImageFormat.Jpeg) 

如何將該文件重命名爲我所做的GUID。現在這是我正在嘗試的方法,但是「sd」突出顯示並且說「類型'System.Drawing.Bitmap'的值不能轉換爲'字符串'」

這是用於製作GUID的代碼:

Dim newName As String 
newName = System.Guid.NewGuid.ToString() 

,這裏是重命名代碼...

Rename(sd, newName) 

我敢肯定,這是愚蠢的東西,但任何幫助,將不勝感激!另外,我是一個完整的新手!所以不要討厭它是完全錯誤的大聲笑。提前致謝!

而且,如果這是在這裏需要的是被如何生成圖像的代碼(它採取的桌面圖像):

sd = New Bitmap(My.Computer.Screen.WorkingArea.Width, _ 
My.Computer.Screen.WorkingArea.Height, _ 
Imaging.PixelFormat.Format32bppArgb) 
Dim g As Graphics = Graphics.FromImage(sd) 
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), _ 
New Size(My.Computer.Screen.WorkingArea.Width, _ 
My.Computer.Screen.WorkingArea.Height)) 
+0

感謝您對它進行編輯。擊敗我! –

+0

在內存「文件」中沒有名稱,所以沒有重新命名。你試圖做的事對我來說並不清楚,你想重命名已經寫入磁盤的文件嗎? – vcsjones

+0

@vcsjones啊我現在看到...以及我正在拍攝桌面圖像,然後將其上傳到FTP帳戶。但是我需要在上傳之前重新命名屏幕截圖。可能? –

回答

0
Dim sd As New Bitmap(My.Computer.Screen.WorkingArea.Width, My.Computer.Screen.WorkingArea.Height, Imaging.PixelFormat.Format32bppArgb) 
Dim g As Graphics = Graphics.FromImage(sd) 
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), New Size(My.Computer.Screen.WorkingArea.Width, My.Computer.Screen.WorkingArea.Height)) 
Dim newName As String 
newName = "C:\Junk\" & System.Guid.NewGuid.ToString() & ".JPG" 
sd.Save(newName, System.Drawing.Imaging.ImageFormat.Jpeg) 
MsgBox("Done") 
+0

我在第二行到最後一行說出「DGI +中發生通用錯誤」時出現「Jpeg」錯誤想法? –

+1

聽起來像一個文件系統錯誤 - 也許文件夾C:\垃圾不存在,或者你沒有寫權限等。 – SSS

+0

是否有沒有把它放在本地PC上的文件夾? –

3

這不是一個文件。沒有文件。只有一些字節集合具有令人滿意的排列方式,只存在於內存中,並且在程序終止的時候將不再存在。在將MemoryStream寫入磁盤之前,沒有文件這樣的東西,因此沒有名稱可供更改。

當您將MemoryStream寫入磁盤上的文件時,您可以在創建一個空文件並打開它進行寫入的位置爲其指定任何名稱。