You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中从图像描述区读取图像标签

在VB.NET中正确提取图像描述区标签的方法

你的代码存在几个关键问题导致无法正常工作,以下是修正方案及说明:

原代码的问题

  1. 返回类型不匹配:函数声明返回DateTime,但实际要返回字符串标签,编译会直接报错
  2. 编码选择错误:对应Exif的UserComment标签(ID为&H9C9E)的内容通常使用ASCII编码,而非Unicode
  3. 未处理空终止符:PropertyItem.Value字节数组末尾会包含空字节,直接转换字符串会带入无效字符

修正后的代码

Public Shared Function GetImageDescriptionTags(ByVal path As String) As String
    Using fs As New FileStream(path, FileMode.Open, FileAccess.Read)
        Using myImage As Image = Image.FromStream(fs, False, False)
            ' 定位到Exif UserComment标签(ID: &H9C9E)
            Dim commentItem = myImage.PropertyItems.FirstOrDefault(Function(pi) pi.Id = &H9C9E)
            If commentItem Is Nothing Then
                Return String.Empty
            End If

            ' 用ASCII编码转换字节数组,截断空终止符前的有效内容
            Dim rawValue = Encoding.ASCII.GetString(commentItem.Value)
            Dim tagContent = rawValue.Substring(0, rawValue.IndexOf(Chr(0)))
            
            Return tagContent
        End Using
    End Using
End Function

关键修正说明

  • 修正返回类型:将函数返回类型改为String,匹配实际要返回的标签内容
  • 正确编码转换:使用Encoding.ASCII解析标签内容,符合Exif UserComment的常规编码规范
  • 截断空字节:通过查找空字符Chr(0)的位置,截取有效标签内容,避免末尾的无效字符

调用该函数后,就能得到你需要的格式内容:StyleShootsModel=sam001;StyleShootsAspectRatio=2_3;StyleShootsPreset=Jacqueline;StyleShootsProducts=21FKA00012;StyleShootsFraming=CRP;StyleShootsEquipment=StyleShoots Live ();

内容的提问来源于stack exchange,提问作者Salman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:46:36