目标
我正在为特定作业编写自动图像大小调整应用程序。使用智能手机拍摄图像,上传到文件夹,然后我的应用程序运行并调整所有文件的大小,并将它们保存到输出文件夹中。
问题
图像大小调整工作正常,问题是保存调整大小的文件时“DateTaken”属性会丢失。
守则
我设法获取原始文件的DateTaken属性的值并将其放入DateTime对象中。我试图找到将这些数据保存回原始文件的方法,但我在网上找不到任何示例,只是将7小时添加到DateTaken属性。
private static void Resize(string imageFile, string outputFile, int maxWidth, int maxHeight)
{
using (var image = Image.FromFile(imageFile))
{
var ratioX = (double)maxWidth / image.Width;
var ratioY = (double)maxHeight / image.Height;
var ratio = Math.Min(ratioX, ratioY);
var newWidth = (int)(image.Width * ratio);
var newHeight = (int)(image.Height * ratio);
var newImage = new Bitmap(newWidth, newHeight);
using (var graphics = Graphics.FromImage(newImage))
graphics.DrawImage(image, 0, 0, newWidth, newHeight);
DateTime DateTaken = GetDateTakenFromImage(imageFile);
newImage.Save(outputFile);
}
}