Android / Samsung Gallery -更改拍摄日期属性

42fyovps  于 2023-04-04  发布在  Android
关注(0)|答案(1)|浏览(131)

虽然我的三星Galaxy设备空间不足,十一月3日2022,我复制了大约3 '000张照片在我的SD卡.坏举动:我所有的照片(尤其是WhatsApp的)现在都被标记为11月3日拍摄的。
然后,我在.NET MAUI中编写了一个应用程序,该应用程序将创建/最后访问时间/最后写入时间更改为取决于文件名-例如:IMG-20210627-WA0001.jpg将这些值设置为2021年6月27日午夜。我记录了之前/之后的日期,效果很好。
这里举个例子,我将日期设置为2021年11月28日午夜。

DateTime newTime = new DateTime(2021, 11, 28, 0,0,0);
File.SetCreationTime("/storage/3439-3532/DCIM/Test EXIF/IMG-20210627-WA0002.jpg", newTime);
File.SetLastWriteTime("/storage/3439-3532/DCIM/Test EXIF/IMG-20210627-WA0002.jpg", newTime);
File.SetLastAccessTime("/storage/3439-3532/DCIM/Test EXIF/IMG-20210627-WA0002.jpg", newTime);

然而,在画廊应用程序中,文件仍然显示在11月3日,在图片信息中,我仍然看到错误的日期。
有什么想法吗

kgsdhlau

kgsdhlau1#

好吧,经过一番挣扎,我终于得到了它。@Jason是对的,它与EXIF有关,但我看了错误的标签:我把注意力集中在datetime和date_digitalized上,但它们是错误的。我使用网站https://exif.tools/来检查我在寻找什么,“Date/Time Original”是我在寻找的。我一开始没有找到它,因为我使用了一个python库来获取EXIF数据,但是,唉,该字段没有记录在我的Python库的img.list_all()命令中,该命令应该列出所有可用的EXIF标记(尽管存在并可访问)...
无论如何,这里是我的代码作为C# MAUI. NET的例子。在EXIFLibNet Nuget包的帮助下,这只需要几行。

  • 如果有人想知道(就像我一样)ImageFile.FromFile来自ExifLibrary命名空间,而不是标准的System.XXX命名空间。*
// Use of Nuget : EXIFLibNet. Add using ExifLibrary;
string imgpath = @"C:\EXIF Cleanup\IMG-20230301-WA0004_01.jpg";
DateTime newDateTime = new DateTime(2023,03,01);
var file = ImageFile.FromFile(imgpath);
file.Properties.Set(ExifTag.DateTimeOriginal, newDateTime);
file.Save(imgpath);

这成功地改变了窗口的日期采取字段中的文件属性〉详细信息窗口,这似乎是一个采取的三星画廊=〉当我复制产生的文件到我的设备,它显示在正确的日期。
但是要注意,如果您没有为newDateTime指定时间,则有2个EXIF属性offset_time和offset_time_original可能会导致问题:在我的测试中,这导致了2个小时的偏移,在3月1日之前的一天标记了我的照片。
这在我的笔记本电脑上的MAUI应用程序上工作,我明天会在我的设备上测试这个,如果需要,我会相应地更新我的答案,如果这不起作用。

相关问题