0

我得到了用 C# 创建图片的日期。这是我正在使用的方法。

foreach (PropertyItem propItem in image.PropertyItems)
{
    if (propItem.Id == 0x0132)
    {
        date = (new System.Text.ASCIIEncoding().GetString(propItem.Value));
        MessageBox.Show("The picture " + file + " was taken at " + date);
        image.Dispose();
        date = date.Substring(0, 4);
        monthstring = getPath + "\\" + date;
        if (!Directory.Exists(monthstring))
        {
            Directory.CreateDirectory(monthstring);
        }
        File.Move(file, monthstring + "\\" + filetype);
        progressBar1.PerformStep();
    }
}

现在,这种方法有时有效。有时,它会返回完全错误的日期!有什么我做错了吗?有时它说它是今天拍摄的,2005 年拍摄的。有时它也给了我错误的月份。主要是那一年搞砸了。

4

1 回答 1

1

尝试这个:

// Get the Date Created property 
System.Drawing.Imaging.PropertyItem propertyItem = image.GetPropertyItem( 0x132 ); 
if( propItem != null ) 
{ 
  // Extract the property value as a String. 
  System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
  string text = encoding.GetString(propertyItem.Value, 0, propertyItem.Len - 1 ); 

  // Parse the date and time. 
  System.Globalization.CultureInfo provider = CultureInfo.InvariantCulture; 
  DateTime dateCreated = DateTime.ParseExact( text, "yyyy:MM:d H:m:s", provider ); 
}

原始答案:

“拍摄日期”未显示在图像属性项中

我怎样才能知道一张照片是在 C# 中实际拍摄的

于 2013-08-11T04:03:25.577 回答