【发布时间】:2014-03-29 05:13:21
【问题描述】:
我正在使用 VB.NET。我可以将文件夹中的图片加载到 flowlayoutpanel 中。然后将点击的图片加载到单独的图片框中,并在标签中显示图片的文件路径。
现在我希望能够为 flowlayoutpanel 中的每个图像添加评级和描述,并将其保存到加载图片的文件夹中的文本文件中。该应用程序应该能够在下次启动或更改所选图像时加载评级和描述。我该如何做到这一点?
【问题讨论】:
我正在使用 VB.NET。我可以将文件夹中的图片加载到 flowlayoutpanel 中。然后将点击的图片加载到单独的图片框中,并在标签中显示图片的文件路径。
现在我希望能够为 flowlayoutpanel 中的每个图像添加评级和描述,并将其保存到加载图片的文件夹中的文本文件中。该应用程序应该能够在下次启动或更改所选图像时加载评级和描述。我该如何做到这一点?
【问题讨论】:
您可能应该考虑访问图片的元数据。这样,您想要的信息就会与图片一起携带。这包含在 PropertyItems Class 中,它是 Image 类的一个属性
这里有一个指向answered question 的链接,用于向 jpg 添加评论。希望这会有所帮助。
这是该代码在 VB.net 中未经测试的转换。您可能需要添加一个或 2 个引用并导入几个命名空间,但在语法上这是正确的,据我所知。
Public Function SetImageComment(input As Image, comment As String) As Image
Using memStream As New IO.MemoryStream()
input.Save(memStream, Imaging.ImageFormat.Jpeg)
memStream.Position = 0
Dim decoder As New JpegBitmapDecoder(memStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad)
Dim metadata As BitmapMetadata
If decoder.Metadata Is Nothing Then
metadata = New BitmapMetadata("jpg")
Else
metadata = decoder.Metadata
End If
metadata.Comment = comment
Dim bitmapFrame = decoder.Frames(0)
Dim encoder As BitmapEncoder = New JpegBitmapEncoder()
encoder.Frames.Add(bitmapFrame.Create(bitmapFrame, bitmapFrame.Thumbnail, metadata, bitmapFrame.ColorContexts))
Dim imageStream As New IO.MemoryStream
encoder.Save(imageStream)
imageStream.Position = 0
input.Dispose()
input = Nothing
Return Image.FromStream(imageStream)
End Using
End Function
【讨论】: