From daa8b80e32951bd0d0a0b10ed7b559ee4c2d2446 Mon Sep 17 00:00:00 2001 From: Andrew Forget Date: Wed, 13 Dec 2023 20:16:04 -0500 Subject: [PATCH] Added AF mode and shooting mode to badge --- Program.cs | 71 ++++++++++++++++++++++++----- Resources/Themes/black/focus.png | Bin 0 -> 3349 bytes Resources/Themes/black/shutter.png | Bin 0 -> 3862 bytes Resources/Themes/dark/focus.png | Bin 0 -> 3933 bytes Resources/Themes/dark/shutter.png | Bin 0 -> 4294 bytes Resources/Themes/light/focus.png | Bin 0 -> 3721 bytes Resources/Themes/light/shutter.png | Bin 0 -> 3945 bytes Resources/Themes/white/focus.png | Bin 0 -> 3147 bytes Resources/Themes/white/shutter.png | Bin 0 -> 2050 bytes 9 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 Resources/Themes/black/focus.png create mode 100644 Resources/Themes/black/shutter.png create mode 100644 Resources/Themes/dark/focus.png create mode 100644 Resources/Themes/dark/shutter.png create mode 100644 Resources/Themes/light/focus.png create mode 100644 Resources/Themes/light/shutter.png create mode 100644 Resources/Themes/white/focus.png create mode 100644 Resources/Themes/white/shutter.png diff --git a/Program.cs b/Program.cs index 4a768d0..7304426 100644 --- a/Program.cs +++ b/Program.cs @@ -36,6 +36,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE using SixLabors.Fonts; using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Processing; +using MetadataExtractor; +//using MetadataExtractor.Formats; namespace ImageDetailsCore { @@ -245,9 +247,9 @@ static void Main(string[] args) { waitingForOutput = false; options.Output = arg; - if (!Directory.Exists(options.Output)) + if (!System.IO.Directory.Exists(options.Output)) { - Directory.CreateDirectory(options.Output); + System.IO.Directory.CreateDirectory(options.Output); } Console.WriteLine("Set output location to: {0}", options.Output); } @@ -255,7 +257,7 @@ static void Main(string[] args) { OutputBadge(arg, location, options); } - else if (Directory.Exists(arg)) + else if (System.IO.Directory.Exists(arg)) { OutputFolderBadges(arg, location, options); } @@ -286,7 +288,7 @@ private static Options ReadOptions(string optionsFileName, string location) private static void OutputFolderBadges(string folder, string assemblyLocation, Options options) { var searchOptions = options.RecursiveFolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - foreach (var file in Directory.GetFiles(folder, "*.*", searchOptions).Order()) + foreach (var file in System.IO.Directory.GetFiles(folder, "*.*", searchOptions).Order()) { if (options.FolderSearchExtensions.Any(extension => string.Equals(System.IO.Path.GetExtension(file), extension, StringComparison.OrdinalIgnoreCase))) { @@ -309,6 +311,33 @@ private static void OutputBadge(string file, string assemblyLocation, Options op foreach (var tag in directory.Tags) { Console.WriteLine($"{directory.Name} - {tag.Name} (0x{tag.Type:x4}) = {tag.Description}"); + //if (directory.Name == "Exif SubIFD" && tag.Name == "Makernote") + //{ + // var byteArray = directory.GetByteArray(tag.Type); + // if (byteArray != null) + // { + // const int rowSize = 32; + // for (var index = 0; index < byteArray.Length; index += rowSize) + // { + // var hexPad = ""; + // var charPad = ""; + // for (var byteIndex = 0; byteIndex < rowSize; byteIndex++) + // { + // if (index + byteIndex < byteArray.Length) + // { + // hexPad += byteArray[index + byteIndex].ToString("x2") + " "; + // charPad += char.IsControl((char)byteArray[index + byteIndex]) ? "." : (char)byteArray[index + byteIndex]; + // } + // else + // { + // hexPad += " "; + // charPad += " "; + // } + // } + // Console.WriteLine("\t{0} - {1}", hexPad, charPad); + // } + // } + //} } } } @@ -376,6 +405,15 @@ private static void OutputBadge(string file, string assemblyLocation, Options op Locator("Exif SubIFD", "White Balance"), }) ?? "n/a"; + var afMode = GetStringValue(directories, new[] { + Locator("Nikon Makernote", "AF Type"), + Locator("Fujifilm Makernote", "Focus Mode"), + }) ?? "n/a"; + + var shootingMode = GetStringValue(directories, new[] { + Locator("Nikon Makernote", "Shooting Mode"), + }) ?? "n/a"; + var dateTimeOriginal = GetStringValue(directories, new[] { Locator("Exif SubIFD", "Date/Time Original"), }) ?? "n/a"; @@ -705,25 +743,34 @@ private static void OutputBadge(string file, string assemblyLocation, Options op imageContext = DrawValue(imageContext, drawingScale, 14, 32, 28, 33, System.IO.Path.Combine(imageLocation, @"camera.png"), "CAMERA", camera, FontStyle.Bold, theme.CameraForegroundColor, theme.LabelColor); // Draw the lens - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 78, System.IO.Path.Combine(imageLocation, @"lens.png"), "LENS", lens, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 73, System.IO.Path.Combine(imageLocation, @"lens.png"), "LENS", lens, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the focal length - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 118, System.IO.Path.Combine(imageLocation, @"ruler.png"), "FOCAL LENGTH", focalLength, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 106, System.IO.Path.Combine(imageLocation, @"ruler.png"), "FOCAL LENGTH", focalLength, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the ISO - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 240, 118, System.IO.Path.Combine(imageLocation, @"film.png"), "ISO", iso, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 220, 106, System.IO.Path.Combine(imageLocation, @"film.png"), "ISO", iso, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the exposure - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 158, System.IO.Path.Combine(imageLocation, @"aperture.png"), "EXPOSURE", string.Format("{0} @ {1}", shutterSpeed, aperture), FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 139, System.IO.Path.Combine(imageLocation, @"aperture.png"), "EXPOSURE", string.Format("{0} @ {1}", shutterSpeed, aperture), FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the exposure bias - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 240, 158, System.IO.Path.Combine(imageLocation, @"bias.png"), "EXPOSURE BIAS", exposureBias, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 220, 139, System.IO.Path.Combine(imageLocation, @"bias.png"), "EXPOSURE BIAS", exposureBias, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the white balance - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 198, System.IO.Path.Combine(imageLocation, @"whitebalance.png"), "WHITE BALANCE", whiteBalance, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 172, System.IO.Path.Combine(imageLocation, @"whitebalance.png"), "WHITE BALANCE", whiteBalance, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the exposure program - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 240, 198, System.IO.Path.Combine(imageLocation, @"exposure.png"), "EXPOSURE PROGRAM", exposureProgram, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 220, 172, System.IO.Path.Combine(imageLocation, @"exposure.png"), "EXPOSURE PROGRAM", exposureProgram, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + + // Draw the AF mode + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 205, System.IO.Path.Combine(imageLocation, @"focus.png"), "FOCUS MODE", afMode, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + + if (shootingMode != "n/a") + { + // Draw the Shooting mode + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 220, 205, System.IO.Path.Combine(imageLocation, @"shutter.png"), "SHOOTING MODE", shootingMode, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + } if (options.SkipDate) { @@ -736,7 +783,7 @@ private static void OutputBadge(string file, string assemblyLocation, Options op imageContext = DrawValue(imageContext, drawingScale, 11, 28, 28, 238, System.IO.Path.Combine(imageLocation, @"calendar.png"), "DATE", dateTimeOriginal, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); // Draw the time - imageContext = DrawValue(imageContext, drawingScale, 11, 28, 240, 238, System.IO.Path.Combine(imageLocation, @"artist.png"), "ARTIST", artist, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); + imageContext = DrawValue(imageContext, drawingScale, 11, 28, 220, 238, System.IO.Path.Combine(imageLocation, @"artist.png"), "ARTIST", artist, FontStyle.Regular, theme.ForegroundColor, theme.LabelColor); } }); var output = System.IO.Path.Combine(options.Output ?? System.IO.Path.GetDirectoryName(file), System.IO.Path.GetFileNameWithoutExtension(file) + "_info.png"); diff --git a/Resources/Themes/black/focus.png b/Resources/Themes/black/focus.png new file mode 100644 index 0000000000000000000000000000000000000000..8829e45f2830070377eafcf80b1c2a7745e6bdcc GIT binary patch literal 3349 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 W>kU+xNt*o6)!W05RJA4Q@P7f7!(M3s literal 0 HcmV?d00001 diff --git a/Resources/Themes/dark/focus.png b/Resources/Themes/dark/focus.png new file mode 100644 index 0000000000000000000000000000000000000000..fa13894c4d57418b94c39f2cdd7801e39e03492d GIT binary patch literal 3933 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 hkey`Pe@w??ej)BVl+^ibh4P<{0mv-#WVl_ literal 0 HcmV?d00001 diff --git a/Resources/Themes/light/focus.png b/Resources/Themes/light/focus.png new file mode 100644 index 0000000000000000000000000000000000000000..92229965ec51efb873ab4aba43ad87b4b7bda425 GIT binary patch literal 3721 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 literal 0 HcmV?d00001 diff --git a/Resources/Themes/light/shutter.png b/Resources/Themes/light/shutter.png new file mode 100644 index 0000000000000000000000000000000000000000..ff098c7ff01063221eb8899526ad55097be288cb GIT binary patch literal 3945 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 literal 0 HcmV?d00001 diff --git a/Resources/Themes/white/shutter.png b/Resources/Themes/white/shutter.png new file mode 100644 index 0000000000000000000000000000000000000000..10233074c808455a9917a958a3898447fa650ae0 GIT binary patch literal 2050 zcmV+d2>thoP)|t)RMP|!Nie<;eDXyK1TUa3K5!|8cq=85#Ns_gpEUwLs%YX3QPJXXYp!qbmo^XS$ePrk@#RzGMDw68z5b^l$X0e{+6BAFe>*YQ+`2ojJ+;LCrUI zC>NQpm|aW{GcSTaR}IZ#RxyJl+u)7B{~n;^WSAxD*fpjOW)Jft={5Rf{J`vHmWa8p zsHQO8%n0c>awwlua#xrl5Rb}eDkTm73F$XzR!%dkndv#lru4dtlFpWP1Lk=mEX_4S zCDpaeKISjdZ!`(sVy?+8S|t*0_fM0}&RyQ1v$%o0fAFuaWR8)3!^Gx2^1A`u$($wq z#?aynB}3cF3AexJm_JFs5wy9$Y@rH05-=p%OZtJg#(ri-3vn%kW-~`gKiF15zu>aW z(KRm2q+zl~JIK~KMM=lFR9e7%N&3Mp3P>DXktxy!h1`avu@Z%~pcEu1jU*A8A;*xY37)rAb7CwcM%$)dt!46mYUr+1}5+SvT? z5YMW&Nk3R+U#EKF@;u3I}mW#>F|U0|C;)tjUroT~6zSd+vP zdi`Zx#$^%2x-+CGWsX$JZ<)4O>Y_9f1d^&2P*BW*xJL>UW%` zrk`2Q9AthsaQq>tY)IXc@nB=|EwhPQTUmqOMRABT2K>}xcMBdf=~A-0iwDQGk+~#C zzxZ1?5zZU%R|{ldqt+)_C14^CFcBr0CT(NhHQ=)rQHO+sLMF0;%-B|nlNiDO*hcm; zp96xP|0Aqh*DT925iC4;T-0%Gtsz^BUeIBkE9yAa{R-wL16Sc1S-W-h7}>fLbjjLH z^rDivT5J{e8lvY(KMv#U5cWEzPnFC~WQdZ9C~cun@DAz61AHv(b!>arMFU2yEs9vk z{6zY3L7zmlnB{#2OoEM)CNt_8(vJ%e?FaN4Fo>*No=Kj(G?Q$sh8Ddz`pa&xMOnBD z?36TkLfIU~x(g%?wkXUUVDd>bMnjSYvsB&AlLM0Ga?)YajnO$NV{?^_fpt>ma@3Qg z8zUs9W=j~mUfCE}Bw;LP-9-9vYAd6$U&zQR*akv!N_%C|jS|LgRW>y$VM<8a<#2A1 zFm<=GsrMyJ32B&gW7R2PYNfKNLlUNhq&*T?Az{i-fN+)a1n@^dxQ0nLR-F>2yb~C% zQg#Bhhk+PcS(yKCq|y!pJrNY9n@K-TB8eaiso?bz#&Q-)xM;>mEENoCPX-;7GM1yT zJXRHl{&&!eqtt<(fDQPmJDzPN2%YZ@9 zD`_&L`ba-6V7a78EIGEY9SY0BMTR;Vg(33Kq#qZw&E>*g&AiL^IN3-HVU2>79mA)D zy^d*zlDS%JleHS87f3%2<7^l9IwmWdLjaNtF@CHmlpTR+D(LvptbGc8ass7 zl8ye*ILJRld&iJ=wre7|6JVEaj5UMkcUZdZj}vvhM30b(RzbP9g@V4(+aEIEvlb5t z`u?9#kjQFjcHPi9JnON%3-fwD{}{UMGH=*a|Zm> zqrU}@nYAS2!NvxiBdpQGG%Xgj)XN=AOFx6p4v_xDPAGTO@g%B|zyq`dHgBT5J)Y%< zQ-;#-X>aVz!iNo8Nl+^$IVdL{4>W8gL7`OnXEhGWiGzB%c<2$*4@6aYIG}yRg^m+S zt!oFPYT)WOvso4+0!sxG%MN0_G^k}FY9HwbrYgJ=*d|fsFOG}@vVK4k|vQdcF$B*lFvbAWW=v*Mhe1BGLA^pIWg}x?Z zZ$fxh?Ir!-6`lQ5fam^XLY5HKJ+*^aRE{vyn~u6M;T3ZqkbW?W2BzAhE%KBWMg~4# z5Y8yI_QFe(!nQKM6Ep@_eqn}t%?gz(ti5y45=Tg|x`!2^V`%-o!y3HK%xEF5g%XA} zn<+_fXa`;!#GsD~Jk)DNw=rLnej{js^lsrYe0d8Uo+|bW@VvKN?rNDy%2K zeEvGB=q9{Pgpf&b}@$~bx@KF(QdT7zyi+7KkJ(nR=jpo@;+Sc2Fwah z;?-oMlue0Fe5&XHD6bdDxqA6+$qqZ@&erGA+ zdN%!C)ZRt;)#VhS2%}3*xKp5h5Z_}YoiLx$hllDm&@gHxm+%n g%jI&pT&^nVAHRz%*y&OmMgRZ+07*qoM6N<$g6QnPc>n+a literal 0 HcmV?d00001