From 50e6e414ee61c4769d81862a0f80782b19fb01af Mon Sep 17 00:00:00 2001 From: ww-rm Date: Mon, 24 Mar 2025 18:49:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/ExportHelper/ExportHelper.cs | 42 +++++++++++++++++++ .../SFMLImageVideoFrame.cs} | 31 ++------------ 2 files changed, 45 insertions(+), 28 deletions(-) create mode 100644 SpineViewer/ExportHelper/ExportHelper.cs rename SpineViewer/{ExportHelper.cs => ExportHelper/SFMLImageVideoFrame.cs} (61%) diff --git a/SpineViewer/ExportHelper/ExportHelper.cs b/SpineViewer/ExportHelper/ExportHelper.cs new file mode 100644 index 0000000..10beedc --- /dev/null +++ b/SpineViewer/ExportHelper/ExportHelper.cs @@ -0,0 +1,42 @@ +using FFMpegCore.Pipes; +using System; +using System.Collections.Generic; +using System.Drawing.Imaging; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SpineViewer.ExportHelper +{ + /// + /// 为帧导出创建的辅助类 + /// + public static class ExportHelper + { + /// + /// 从纹理对象获取 Winforms Bitmap 对象 + /// + public static Bitmap CopyToBitmap(this SFML.Graphics.Texture tex) + { + using var img = tex.CopyToImage(); + img.SaveToMemory(out var imgBuffer, "bmp"); + using var stream = new MemoryStream(imgBuffer); + return new Bitmap(stream); + } + + /// + /// 从纹理获取适合 FFMpegCore 的帧对象 + /// + public static SFMLImageVideoFrame CopyToFrame(this SFML.Graphics.Texture tex) => new(tex.CopyToImage()); + + /// + /// 根据文件格式获取合适的文件后缀 + /// + public static string GetSuffix(this ImageFormat imageFormat) + { + if (imageFormat == ImageFormat.Icon) return ".ico"; + else if (imageFormat == ImageFormat.Exif) return ".jpg"; + else return $".{imageFormat.ToString().ToLower()}"; + } + } +} diff --git a/SpineViewer/ExportHelper.cs b/SpineViewer/ExportHelper/SFMLImageVideoFrame.cs similarity index 61% rename from SpineViewer/ExportHelper.cs rename to SpineViewer/ExportHelper/SFMLImageVideoFrame.cs index ea517b9..d71c3c8 100644 --- a/SpineViewer/ExportHelper.cs +++ b/SpineViewer/ExportHelper/SFMLImageVideoFrame.cs @@ -1,13 +1,11 @@ -using FFMpegCore.Pipes; -using System; +using System; using System.Collections.Generic; -using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; -using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; +using FFMpegCore.Pipes; -namespace SpineViewer +namespace SpineViewer.ExportHelper { /// /// SFML.Graphics.Image 帧对象包装类 @@ -38,27 +36,4 @@ namespace SpineViewer /// True if saving was successful public bool SaveToMemory(out byte[] output, string format) => image.SaveToMemory(out output, format); } - - /// - /// 为帧导出创建的辅助类 - /// - public static class ExportHelper - { - public static Bitmap CopyToBitmap(this SFML.Graphics.Texture tex) - { - using var img = tex.CopyToImage(); - img.SaveToMemory(out var imgBuffer, "bmp"); - using var stream = new MemoryStream(imgBuffer); - return new Bitmap(stream); - } - - public static SFMLImageVideoFrame CopyToFrame(this SFML.Graphics.Texture tex) => new(tex.CopyToImage()); - - public static string GetSuffix(this ImageFormat imageFormat) - { - if (imageFormat == ImageFormat.Icon) return ".ico"; - else if (imageFormat == ImageFormat.Exif) return ".jpg"; - else return $".{imageFormat.ToString().ToLower()}"; - } - } }