在picturebox中显示Jpeg的元数据缩略图



我需要显示图像的缩略图,该缩略图保存在图片框中的元数据中。我正在使用VB.NET

http://msdn.microsoft.com/en-us/library/windows/desktop/ee719904%28v=vs.85%29.aspx#_jpeg_metadata

到目前为止,我想出了这个。添加断点显示GETQUERY返回空,即使我知道文件确实有缩略图

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim imagepath = "C:xampphtdocsDownloadsIMG_1322.JPG" ' path to file
    Dim stream = New FileStream(imagepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
    Dim decoder = New JpegBitmapDecoder(stream, BitmapCreateOptions.None, BitmapCacheOption.None)
    Dim metadata = TryCast(decoder.Frames(0).Metadata, BitmapMetadata)
    Dim ms As New System.IO.MemoryStream
    Dim bm As Bitmap
    Dim arData() As Byte
    arData = metadata.GetQuery("/app0/{ushort=6}") '<--- Breakpoint here: Query returns nothing!

    ms.Write(arData, 78, arData.Length - 78)
    bm = New Bitmap(ms)
    PictureBox1.Image = bm
    stream.Close()
End Sub

您可以尝试以下操作:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim imagepath = "C:xampphtdocsDownloadsIMG_1322.JPG" ' path to file
    Dim stream = New FileStream(imagepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
    Dim decoder = New JpegBitmapDecoder(stream, BitmapCreateOptions.None, BitmapCacheOption.None)
    Dim metadata = TryCast(decoder.Frames(0).Metadata, BitmapMetadata)
    Dim thumb As BitmapMetadataBlob
    thumb = metadata.GetQuery("/app1/thumb/")
    If Not (thumb Is Nothing) Then
        Dim src As New BitmapImage
        Dim ms As MemoryStream = New MemoryStream(thumb.GetBlobValue())
        src.BeginInit()
        src.StreamSource = ms
        src.EndInit()
        PictureBox1.Source = src
    End If
    stream.Close()
End Sub

最新更新