fix up GPS, sorta
This commit is contained in:
parent
32403ddeb5
commit
0ca67f2cef
14
Photo.cs
14
Photo.cs
@ -24,6 +24,8 @@ public class Photo {
|
|||||||
public string IsoSpeed = "<unk>";
|
public string IsoSpeed = "<unk>";
|
||||||
public int Rating = 0;
|
public int Rating = 0;
|
||||||
public ushort Orientation = 1;
|
public ushort Orientation = 1;
|
||||||
|
public Rational[]? GpsLatitude = null;
|
||||||
|
public Rational[]? GpsLongitude = null;
|
||||||
public Rectangle CropRectangle = Rectangle.Empty;
|
public Rectangle CropRectangle = Rectangle.Empty;
|
||||||
|
|
||||||
private static long touchCounter = 0;
|
private static long touchCounter = 0;
|
||||||
@ -110,6 +112,8 @@ public class Photo {
|
|||||||
"{0:D4}:{1:D2}:{2:D2} {3:D2}:{4:D2}:{5:D2}",
|
"{0:D4}:{1:D2}:{2:D2} {3:D2}:{4:D2}:{5:D2}",
|
||||||
now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second);
|
now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second);
|
||||||
exif.SetValue<string>(ExifTag.DateTime, datetime);
|
exif.SetValue<string>(ExifTag.DateTime, datetime);
|
||||||
|
exif.SetValue<Rational[]>(ExifTag.GPSLatitude, GpsLatitude);
|
||||||
|
exif.SetValue<Rational[]>(ExifTag.GPSLongitude, GpsLongitude);
|
||||||
|
|
||||||
image.Metadata.XmpProfile = UpdateXmp(image.Metadata.XmpProfile);
|
image.Metadata.XmpProfile = UpdateXmp(image.Metadata.XmpProfile);
|
||||||
|
|
||||||
@ -267,6 +271,16 @@ public class Photo {
|
|||||||
Console.WriteLine($"*** WARNING: unexpected DateTimeOriginal value: {dateTimeOriginal.Value}");
|
Console.WriteLine($"*** WARNING: unexpected DateTimeOriginal value: {dateTimeOriginal.Value}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IExifValue<Rational[]>? gpsLatitude;
|
||||||
|
if (exifs.TryGetValue(ExifTag.GPSLatitude, out gpsLatitude)) {
|
||||||
|
GpsLatitude = gpsLatitude.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
IExifValue<Rational[]>? gpsLongitude;
|
||||||
|
if (exifs.TryGetValue(ExifTag.GPSLongitude, out gpsLongitude)) {
|
||||||
|
GpsLongitude = gpsLongitude.Value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetShortLensModel(string lensModel) {
|
public string GetShortLensModel(string lensModel) {
|
||||||
|
21
Program.cs
21
Program.cs
@ -684,10 +684,10 @@ public class Game : GameWindow {
|
|||||||
false, 5 * sizeof(float), 3 * sizeof(float));
|
false, 5 * sizeof(float), 3 * sizeof(float));
|
||||||
|
|
||||||
// Load photos from a directory.
|
// Load photos from a directory.
|
||||||
string[] files = Directory.GetFiles(@"c:\users\colin\desktop\photos-test\");
|
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\photos-test\");
|
||||||
// string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\14\");
|
// string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\14\");
|
||||||
// string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\23\");
|
// string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\23\");
|
||||||
// string[] files = Directory.GetFiles(@"G:\DCIM\100EOSR6\");
|
string[] files = Directory.GetFiles(@"G:\DCIM\100EOSR6\");
|
||||||
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\totte-output\2023\07\31");
|
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\totte-output\2023\07\31");
|
||||||
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\import");
|
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\import");
|
||||||
// string[] files = Directory.GetFiles(@"C:\Users\colin\Pictures\photos\2018\06\23");
|
// string[] files = Directory.GetFiles(@"C:\Users\colin\Pictures\photos\2018\06\23");
|
||||||
@ -703,6 +703,21 @@ public class Game : GameWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
allPhotos.Sort(ComparePhotosByDate);
|
allPhotos.Sort(ComparePhotosByDate);
|
||||||
|
|
||||||
|
// Fix up photos with missing GPS.
|
||||||
|
Rational[]? lastLatitude = null;
|
||||||
|
Rational[]? lastLongitude = null;
|
||||||
|
foreach (Photo p in allPhotos) {
|
||||||
|
if (p.GpsLatitude != null && p.GpsLongitude != null) {
|
||||||
|
lastLatitude = p.GpsLatitude;
|
||||||
|
lastLongitude = p.GpsLongitude;
|
||||||
|
}
|
||||||
|
if (p.GpsLatitude == null || p.GpsLongitude == null) {
|
||||||
|
Console.WriteLine("fixing GPS for " + p.Filename);
|
||||||
|
p.GpsLatitude = lastLatitude;
|
||||||
|
p.GpsLongitude = lastLongitude;
|
||||||
|
}
|
||||||
|
}
|
||||||
photos = allPhotos;
|
photos = allPhotos;
|
||||||
|
|
||||||
LoadThumbnailsAsync();
|
LoadThumbnailsAsync();
|
||||||
@ -767,7 +782,7 @@ public class Game : GameWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (Photo p in toLoad) {
|
foreach (Photo p in toLoad) {
|
||||||
await Task.Run( () => { p.LoadAsync(geometry.PhotoBox.Size); });
|
await Task.Run( () => { p.LoadAsync(p.Size); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user