C#实现WebP Base64转JPG/PNG Base64(无需存文件)求助
WebP Base64 转 JPG/PNG Base64(无需保存文件)
核心思路是用MemoryStream替代本地文件流,完成格式转换后直接将流内容转为Base64字符串,全程不需要写入本地文件。
关键注意点
- .NET Framework 默认的
Image.FromStream不支持WebP格式,需要引入第三方库(如WebP.Net或ImageSharp)实现WebP解码 - .NET Core/.NET 5+ 若使用
System.Drawing.Common,仅推荐Windows平台使用;跨平台场景优先选择ImageSharp这类原生跨平台图像库
方案1:Windows平台使用 System.Drawing
已解决WebP支持问题的Windows环境下,可修改代码如下:
using System.Drawing; using System.Drawing.Imaging; using System.IO; public string ConvertWebpBase64ToJpgBase64(string webpBase64) { // 将WebP Base64转为字节数组并加载为Image对象 byte[] webpBytes = Convert.FromBase64String(webpBase64); using (Image image = Image.FromStream(new MemoryStream(webpBytes))) { // 创建内存流存储转换后的图片 using (MemoryStream outputStream = new MemoryStream()) { // 保存为JPG格式(替换为ImageFormat.Png可转PNG) image.Save(outputStream, ImageFormat.Jpeg); // 将内存流转为Base64字符串返回 return Convert.ToBase64String(outputStream.ToArray()); } } }
方案2:跨平台使用 ImageSharp
ImageSharp原生支持WebP解码,兼容性更强。先安装NuGet依赖:
Install-Package SixLabors.ImageSharp Install-Package SixLabors.ImageSharp.Webp
转换代码示例:
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Formats.Jpeg; using SixLabors.ImageSharp.Formats.Webp; using SixLabors.ImageSharp.PixelFormats; using System.IO; // 转JPG public string ConvertWebpBase64ToJpgBase64(string webpBase64) { byte[] webpBytes = Convert.FromBase64String(webpBase64); using (Image<Rgba32> image = Image.Load(webpBytes, new WebpDecoder())) { using (MemoryStream outputStream = new MemoryStream()) { // 可配置JPG质量(0-100) image.Save(outputStream, new JpegEncoder { Quality = 90 }); return Convert.ToBase64String(outputStream.ToArray()); } } } // 转PNG public string ConvertWebpBase64ToPngBase64(string webpBase64) { byte[] webpBytes = Convert.FromBase64String(webpBase64); using (Image<Rgba32> image = Image.Load(webpBytes, new WebpDecoder())) { using (MemoryStream outputStream = new MemoryStream()) { image.Save(outputStream, new SixLabors.ImageSharp.Formats.Png.PngEncoder()); return Convert.ToBase64String(outputStream.ToArray()); } } }
内容的提问来源于stack exchange,提问作者jesbalchiero
相关产品推荐
相关产品推荐

