使用C#检查base64字符串(图像)类型 [英] Check base64 string(image) type using C#

查看:158
本文介绍了使用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;
}


Regular Expression Language - Quick Reference[^]


这篇关于使用C#检查base64字符串(图像)类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆