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 ); 
}

元の回答:

「撮影日」が画像の PropertyItems に表示されない

C#で実際に写真が撮られた時期を知るにはどうすればよいですか

于 2013-08-11T04:03:25.577 に答える