VB
Microsoft 开发的一种面向对象的编程语言,其在 .NET Framework 上实现。 以前称为 Visual Basic .NET。
59 个问题
我需要加载的图片在mb大小中非常大。我正在尝试调整它们的尺寸,以便在将它们加载到图片框中时减少内存使用量(它们不需要质量完美,因为它类似于预览。但是命令 PictureBox1.LoadAsync() 需要图像位置路径。我想调整图像大小并将它们静态加载到图片框中,而无需将它们保存在硬盘驱动器中。这可能吗?
任何关于它的建议或任何进一步的问题\减少内存使用的方法都是值得赞赏的。
(我通过加载图像的缩略图解决了这个问题(从 5-6 个 ram 使用量到 <2)
Note:此问题总结整理于:Is it possible to resize images and asynchronously load them in pictureboxes without saving?(Visual Basic)(Solved)
以下示例是从URL加载图片,然后重置分辨率,最后在图片框中显示其中一张。 以下是您可以参考的代码。
Private newBitmap As Bitmap
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
End Sub
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim imgLst As List(Of Bitmap) = Await GetImagesFromURL("image url")
newBitmap = New Bitmap(imgLst(0))
' Set bitmap resolution
newBitmap.SetResolution(50, 50)
PictureBox1.Image = newBitmap
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
PictureBox1.Image = Nothing
newBitmap.Dispose()
End Sub
Private Async Function GetImagesFromURL(url As String) As Task(Of List(Of Bitmap))
Dim images = New List(Of Bitmap)()
Using client = New HttpClient()
Dim response = Await client.GetAsync(url)
If response IsNot Nothing AndAlso response.StatusCode = HttpStatusCode.OK Then
Using stream = Await response.Content.ReadAsStreamAsync()
Dim memStream = New MemoryStream()
Await stream.CopyToAsync(memStream)
memStream.Position = 0
images.Add(New Bitmap(memStream))
End Using
End If
End Using
Return images
End Function
希望对您有所帮助。
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。