使用C#检查base64字符串(图像)类型 [英] Check base64 string(image) type using C#
本文介绍了使用C#检查base64字符串(图像)类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
实际上我的应用程序我有上传图像功能,我已经将一个参数(base64string)传递给我的控制器。在这里,我想检查base64string类型。我试过一种方法,但如果有任何人知道请告诉我那个答案,这是错误的。
我需要改变这一行。如何检查该字符串中的类型,
string x = base64image.Replace(data:image / png | tiff | jpg | gif ; base64,,);
我的尝试:
public bool LoadImage([FromBody] string base64image)
{
string x = base64image.Replace(data:image / png | tiff | jpg | gif; base64,,);
byte [] data = System.Convert.FromBase64String(x);
MemoryStream ms = new MemoryStream(data);
Image img = Image.FromStream(ms);
返回false;
}
解决方案
使用正则表达式:
使用系统;
使用 System.Drawing;
使用 System.IO;
使用 System.Text.RegularExpressions;
public sealed class DataImage
{
private static readonly 正则表达式DataUriPattern = 新正则表达式( @ ^ data\:(?<类型> image\ /(PNG | TIFF | JPG | GIF)); BASE64,(<数据> [A-Z0-9\ + \ /? \ =] +)
,RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase);
private DataImage( string mimeType, byte [] rawData)
{
MimeType = mimeType;
RawData = rawData;
}
public string MimeType {获得跨度>; }
public byte [] RawData { get 跨度>; }
public Image Image = > Image.FromStream( new MemoryStream(RawData));
public static DataImage TryParse( string dataUri)
{
if ( string .IsNullOrWhiteSpace (dataUri)) return null ;
匹配匹配= DataUriPattern.Match(dataUri);
if (!match.Success) return 空跨度>;
string mimeType = match.Groups [ 型跨度>]值。
string base64Data = match.Groups [ 数据跨度>]值。
尝试
{
byte [] rawData = Convert.FromBase64String(base64Data);
return rawData.Length == 0 ? null : new DataImage(mimeType,rawData);
}
catch (FormatException)
{
return null ;
}
}
}
public bool LoadImage([FromBody] string base64image)
{
DataImage image = DataImage.TryParse(base64image);
if (image == null ) return false ;
Image img = image.Image;
// 对图片执行某些操作...
返回 true ;
}
正则表达式语言 - 快速参考 [ ^ ]
hi,
Actually my application i have the upload image functionality there i have passed one parameter(base64string) to my controller. here i want to check the base64string type . i tried one way but that was wrong if anybodys know please tell me that answer .
i need to change this line . how to check the type inside that string ,
string x = base64image.Replace("data:image/png|tiff|jpg|gif;base64,", "");
What I have tried:
public bool LoadImage([FromBody]string base64image) { string x = base64image.Replace("data:image/png|tiff|jpg|gif;base64,", ""); byte[] data = System.Convert.FromBase64String(x); MemoryStream ms = new MemoryStream(data); Image img = Image.FromStream(ms); return false; }
解决方案
Use a Regular Expression:
using System; using System.Drawing; using System.IO; using System.Text.RegularExpressions; public sealed class DataImage { private static readonly Regex DataUriPattern = new Regex(@"^data\:(?<type>image\/(png|tiff|jpg|gif));base64,(?<data>[A-Z0-9\+\/\=]+)
", RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase); private DataImage(string mimeType, byte[] rawData) { MimeType = mimeType; RawData = rawData; } public string MimeType { get; } public byte[] RawData { get; } public Image Image => Image.FromStream(new MemoryStream(RawData)); public static DataImage TryParse(string dataUri) { if (string.IsNullOrWhiteSpace(dataUri)) return null; Match match = DataUriPattern.Match(dataUri); if (!match.Success) return null; string mimeType = match.Groups["type"].Value; string base64Data = match.Groups["data"].Value; try { byte[] rawData = Convert.FromBase64String(base64Data); return rawData.Length == 0 ? null : new DataImage(mimeType, rawData); } catch (FormatException) { return null; } } }
public bool LoadImage([FromBody] string base64image) { DataImage image = DataImage.TryParse(base64image); if (image == null) return false; Image img = image.Image; // Do something with the image... return true; }
这篇关于使用C#检查base64字符串(图像)类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文