From ce1a8287115a4793f4a1194c0488cf809497cd8b Mon Sep 17 00:00:00 2001 From: Manuel Kamper Date: Mon, 19 Aug 2024 09:51:28 +0200 Subject: [PATCH] implemented #21 --- Mk0.Software.ImageSorter/Konverter.cs | 21 ++++++++++--- Mk0.Software.ImageSorter/Main.cs | 29 +++++++++++++++++- .../Mk0.Software.ImageSorter.csproj | 1 + .../Properties/Resources.Designer.cs | 10 ++++++ .../Properties/Resources.resx | 3 ++ .../Resources/converted.png | Bin 0 -> 2541 bytes 6 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 Mk0.Software.ImageSorter/Resources/converted.png diff --git a/Mk0.Software.ImageSorter/Konverter.cs b/Mk0.Software.ImageSorter/Konverter.cs index deddca4..c78feb5 100644 --- a/Mk0.Software.ImageSorter/Konverter.cs +++ b/Mk0.Software.ImageSorter/Konverter.cs @@ -10,17 +10,28 @@ namespace Mk0.Software.ImageSorter private string imagePath; public string newFilePath { get; set; } - public Konverter(string imagePath, bool auto = false, string autoFormat = "") + public Konverter(string imagePath, bool auto = false, MagickFormat autoFormat = MagickFormat.Png) { - InitializeComponent(); this.imagePath = imagePath; - labelBildname.Text = imagePath; - comboBoxFormat.SelectedIndex = 0; + if (auto) + { + using (MagickImage image = new MagickImage(imagePath)) + { + image.Format = autoFormat; + newFilePath = Path.Combine(Path.GetDirectoryName(imagePath), Path.GetFileNameWithoutExtension(imagePath) + "." + autoFormat.ToString().ToLower()); + image.Write(newFilePath); + } + } + else + { + InitializeComponent(); + labelBildname.Text = imagePath; + comboBoxFormat.SelectedIndex = 0; + } } private void ButtonKonvert_Click(object sender, EventArgs e) { - //todo konvertieren using (MagickImage image = new MagickImage(imagePath)) { if (comboBoxFormat.SelectedItem == "PNG") diff --git a/Mk0.Software.ImageSorter/Main.cs b/Mk0.Software.ImageSorter/Main.cs index f765e34..902c818 100644 --- a/Mk0.Software.ImageSorter/Main.cs +++ b/Mk0.Software.ImageSorter/Main.cs @@ -1292,7 +1292,23 @@ namespace Mk0.Software.ImageSorter /// private void PictureBox_LoadCompleted(object sender, AsyncCompletedEventArgs e) { - Zoom(); + if (e.Error != null && Path.GetExtension(pictureBoxImage.ImageLocation).ToLower() == ".webp") + { + Konverter k = new Konverter(pictureBoxImage.ImageLocation, true); + if (File.Exists(k.newFilePath)) + { + string del = pictureBoxImage.ImageLocation; + images[imageIndex] = k.newFilePath; + LoadPicture(imageIndex); + FileSystem.DeleteFile(del, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing); + Image myImg = CopyImage.GetCopyImage(k.newFilePath); + ShowAutoConvertMessage(myImg, k.newFilePath); + } + } + else + { + Zoom(); + } } /// @@ -1470,6 +1486,17 @@ namespace Mk0.Software.ImageSorter banner.ShowMessages(); } + /// + /// Anzeige eines Banners bei automatischem Konvertieren von WEBP-Bildern + /// + /// + /// + private void ShowAutoConvertMessage(Image bild, string bildpfad) + { + banner.Enqueue("Das WEBP-Bild \"" + Path.GetFileName(bildpfad) + "\" wurde", "automatisch konvertiert.", bild, Properties.Resources.converted); + banner.ShowMessages(); + } + /// /// Anzeige eines Banners bei erstelltem Duplikat /// diff --git a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj index 68bf28d..866f0a0 100644 --- a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj +++ b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj @@ -231,6 +231,7 @@ + diff --git a/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs b/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs index f2494d9..98684e6 100644 --- a/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs +++ b/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs @@ -220,6 +220,16 @@ namespace Mk0.Software.ImageSorter.Properties { } } + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap converted { + get { + object obj = ResourceManager.GetObject("converted", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// diff --git a/Mk0.Software.ImageSorter/Properties/Resources.resx b/Mk0.Software.ImageSorter/Properties/Resources.resx index b1130b6..f451d90 100644 --- a/Mk0.Software.ImageSorter/Properties/Resources.resx +++ b/Mk0.Software.ImageSorter/Properties/Resources.resx @@ -259,4 +259,7 @@ ..\Resources\inpaint-reloadfile.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\converted.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/Resources/converted.png b/Mk0.Software.ImageSorter/Resources/converted.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9b04aeca90f586e57048d389b1970ffd10213a GIT binary patch literal 2541 zcmV{+P)EX>4Tx04R}tkv&MmKpe$iQ>8^J4(%Y~kfA!Yi;6gwDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRER!9{26k|B)!$s zqDR2UHgIv>)8swiat9cF(j`N3BtK1|Tn66H=$nc__!byib9?LVv%1d_u000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rj2onb`2h=kP^#A|>8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b2gXT6K~!ko<(g}7Rn-;8e`}v}ZxRTQ7Z4pJgqILN9@eoI z1%kHJ!7?2?^5{bdaXQo12T)r~QPioHM|A`oKC~7Sq>@0ZPIW4s))4IAU}dPZWw3w{ z^5BsK2}vN~KF(hKkjOhXxg;Ss)AjAl-DltRUyuJ9j)I*3y+b=LsI7YQ-o38g_iTY|8Jo)6`k9W6tdY4-l6k{u!NI3KCl!8!4)Nut}4sw5sVqGbXC_!L7 zz$?2Rl2FL>ww5U&k8g`ISz$1!ACMM(6hQ^GV2@kR?2DJClGQtAZwup=2Gt*YF1sM= z2ylT+z;^>uDN$kQmk+_98LrAo;2xCz+GemwCZd@N*^2zYh_}_Rfz3d9)Sy*CiReZW@|XdJWZ!?{g>sz<$%@Ts3?|IzC)pkMlEc3dc^CG7M)Yucx5ueyQ->y z6-PeBI!^$VJqC1RFy8tl&=1IHXG-=024AQUs^#{QUfc8p(95&m2!Xx^?7NQFPl@WQ zdDDt2qXw%q8EA0ta$(oY#0;+0eVY^MUM{b{bxs=Wi{mWUw!gzURDRIxWR z+;rZriILX&Ji?Z!F76f1&Zu_CIOZT4`8al!xq1hL ztWqBdf!5OG;ha`nX19l|{={=q-w5)VRZkR=DFG z+jdD#tu;*i+;{q;vB90^eHwA(BUV4dWou`9JiW$Y(m@|#2Qn)nhxG-}C$#8qeVDTo zU%>g!Cw*^8KW2X8dhHtu8-=0ePE%TK!lu7}wW0V}Z?Dy+Auhdd6b&GQSA?yPpOpKCLZceJ_sRy?8*_XC1|G(Xp;}S)md?5jXctb>( zPxQlgQ5YwVO#Wg~uFwPI0{x0Br?C`*WVZA#{ZXbus~3AA5&2l*kXo%r_*dGR4cenX zr@fSas_JJ8R@<<~wJ=<|!0$x4hil*C`cN(NEYGOgGyYIRQ%{+~TvliY{<w}uI z7Uf7xdipBRp55s<@=xHt2#3}TffpUWoqT%n!ndr|{jQO-L9BI=K8oB1dMCo+>c?^l z2fUhpE~Y`Bt+U7brMMeGCjgPIOZtoQeMKJ>!(k7q93-qT2y{4#AEY^X8D( z^FuKk-a|LOVMXnG2=8B#>#g<)Kp$WN=nP;cFutV(`kIXW9yg9mzV|JBK4@Q z1NL^psBD6YE)E3EfS3lIvZg>Ct9u2ONi*;cHBP`RRgW%|m<0`xyr#f9o-J0xkAOcA-6-}lzE|)g^ug&KPe(NcNLpLq z0lRA!I0>z5HjrvLku6<1bRBr58{kldU{nu=$I=y5;zF7XO zB6p*DJHm7o86ir1ivbh}scI$2NfG{muq_aF_r!C)DP>)Oy(G~ODV(GE%b~6mt3p|) zW*|jH24FQ&4d)%C%0tgMBIg