1

好吧,标题几乎说明了一切。如果我在文件流中有这样的图像:

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

我如何将此文件重命名为我制作的 GUID。现在这是我正在尝试的方法,但是“sd”被突出显示并说“'System.Drawing.Bitmap'类型的值不能转换为'String'”

这是制作 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))
4

2 回答 2

3

它不是一个文件。没有文件。只有具有某种令人愉悦的排列的字节集合仅存在于内存中,并且在您的程序终止时将不复存在。在您将 MemoryStream 写入某个磁盘之前,没有文件之类的东西,因此您无需更改名称。

当您获取 MemoryStream 并将其写入磁盘上的文件时,您可以在创建一个空文件并打开它进行写入时为其指定所需的任何名称。

于 2013-01-04T02:38:50.537 回答
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")
于 2013-01-04T02:37:36.550 回答