拖放后图像名称元数据错误

时间:2013-03-14 18:10:06

标签: c# drag-and-drop metadata

我有一个图像管理器应用程序,我允许拖放。在拖入图像时,我执行此行以获取图像的路径和名称。

public bool GetFileName(out string _filename, DrageventArgs E)
{
    _filename = String.Empty;
    Array data = ((System.Windows.Forms.IDataObject)e.Data).GetData("FileName") as Array;
    ...
}

该行取自This article,所以它可能对我的等级来说太高级了,但它运作得很好,我认为我已经很好地理解它使用它做了什么。

但是,我在获得正确的图片标题方面遇到了问题。我怀疑“FileName”数据可能是原因,因为当拖动一个名为“Phare.jpg”的图像时,我得到的字符串是

"C:\Users\\Public\Pictures\SAMPLE~1\LIGHTH~1.JPG". 

“LIGHTH”位基本上是“phare”,但在英语中......至少是第一个字母。也许我没有提取正确的数据?有一个更好的方法吗?是否有一个不同于“FileName”的数据,我可以尝试拔出?

1 个答案:

答案 0 :(得分:2)

这是8.3 file name从普通文件名构造的。很可能用于显示文件名称的软件使用一些有趣的文件名映射来显示名称或非8.3名称与8.3名称完全不同就是你的情况(在命令提示符下执行dir C:\Users\\Public\Pictures\SAMPLE~1可能会显示实际的内容文件名是)。

您应该可以使用System.IO.Path.GetFullPath()将8.3文件名映射回常规名称。

您可以从图像元数据中获取其他语言的图像名称 - 请查看Image.PropertyItems