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 に答える