Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在picturebox中显示Jpeg的元数据缩略图_Vb.net_Metadata_Jpeg_Thumbnails_Picturebox - Fatal编程技术网

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

Vb.net 在picturebox中显示Jpeg的元数据缩略图,vb.net,metadata,jpeg,thumbnails,picturebox,Vb.net,Metadata,Jpeg,Thumbnails,Picturebox,我需要显示图像的缩略图,它保存在picturebox的元数据中。我正在使用VB.NET 到目前为止,我想出了这个。添加断点会显示GETQUERY返回空,即使我知道文件确实有缩略图 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim imagepath = "C:\xampp\htdocs\Downloads\IMG_1322.JPG" ' p

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

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

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim imagepath = "C:\xampp\htdocs\Downloads\IMG_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\u Load(发送方作为System.Object,e作为System.EventArgs)处理MyBase.Load
Dim imagepath=“C:\xampp\htdocs\Downloads\IMG_1322.JPG”文件路径
Dim stream=新文件流(imagepath、FileMode.Open、FileAccess.Read、FileShare.ReadWrite)
Dim decoder=新的JpegBitmapDecoder(流,BitmapCreateOptions.None,BitmapCacheOption.None)
Dim metadata=TryCast(解码器。帧(0)。元数据,位图元数据)
将ms变暗为新System.IO.MemoryStream
将bm设置为位图
Dim arData()作为字节

arData=metadata.GetQuery(“/app0/{ushort=6}”)您可以尝试以下方法:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim imagepath = "C:\xampp\htdocs\Downloads\IMG_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

耶!你是最棒的你的代码中有一个类型。bm未声明,ms声明2次。但它太棒了!谢谢您如何找到IPTC数据的查询路径?例如,如何知道要编写什么查询来获取/设置图像的标题?