我需要重命名我的图片(.jpg),新名称需要包含所拍摄的日期。我可以获取图像的日期,但不能将其包含在新的文件名中。
Image im = new Bitmap("FileName.....");
PropertyItem pi = im.GetPropertyItem(0x132);
dateTaken = Encoding.UTF8.GetString(pi.Value);
dateTaken = dateTaken.Replace(":", "").Replace(" ", "");
string newName = dateTaken +".jpg" ;
MessageBox.Show(newName.ToString());
答案 0 :(得分:0)
问题是您无法将日期输入到您尝试在消息框中显示的字符串中,或者您是否尝试更改图像的文件名?如果要更改图像文件名,则必须修改文件本身。看Replace part of a filename in C#
答案 1 :(得分:-1)
如果您想重命名您的jpeg文件,可以尝试以下代码。
此代码将从图像中提取日期(需要图像的完整文件路径),将其转换为其他格式,然后将其用作新文件名。重命名文件的代码已注释掉,以便您可以在本地计算机上尝试之前在控制台中查看结果。
示例代码。请使用您自己的完全限定文件路径
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
// This is just an example directory, please use your fully qualified file path
string oldFilePath = @"C:\Users\User\Desktop\image.JPG";
// Get the path of the file, and append a trailing backslash
string directory = System.IO.Path.GetDirectoryName(oldFilePath) + @"\";
// Get the date property from the image
Bitmap image = new Bitmap(oldFilePath);
PropertyItem test = image.GetPropertyItem(0x132);
// Extract the date property as a string
System.Text.ASCIIEncoding a = new ASCIIEncoding();
string date = a.GetString(test.Value, 0, test.Len - 1);
// Create a DateTime object with our extracted date so that we can format it how we wish
System.Globalization.CultureInfo provider = CultureInfo.InvariantCulture;
DateTime dateCreated = DateTime.ParseExact(date, "yyyy:MM:d H:m:s", provider);
// Create our own file friendly format of daydayMonthMonthYearYearYearYear
string fileName = dateCreated.ToString("ddMMyyyy");
// Create the new file path
string newPath = directory + fileName + ".JPG";
// Use this method to rename the file
//System.IO.File.Move(oldFilePath, newPath);
Console.WriteLine(newPath);