public static class ImageURLToBase64
{
/// <summary>
/// 画像URLからBase64文字列を取得
/// </summary>
/// <param name="strImgeURL"></param>
/// <returns></returns>
public static async Task<string> GetBase64(string strImgeURL)
{
string strResult = string.Empty;
byte[] bs = null;
using (WebClient objWebClient = new WebClient())
{
bs = await objWebClient.DownloadDataTaskAsync(strImgeURL);
}
if(bs != null)
{
strResult = Convert.ToBase64String(bs);
string strType = GetImageTypeFromByte(bs);
if (strType != string.Empty)
{
strResult = "data:image/" + strType + ";base64," + strResult;
}
}
return strResult;
}
/// <summary>
/// バイト配列を読んで画像種別を判定
/// </summary>
/// <param name="arrayBytes"></param>
/// <returns></returns>
private static string GetImageTypeFromByte(byte[] arrayBytes)
{
Dictionary<string, string> ImageTypes = new Dictionary<string, string>();
ImageTypes.Add("FFD8", "jpg");
ImageTypes.Add("424D", "bmp");
ImageTypes.Add("474946", "gif");
ImageTypes.Add("89504E470D0A1A0A", "png");
string strBytes = BitConverter.ToString(arrayBytes).Replace("-", string.Empty);
KeyValuePair<string,string> SelectImageType = ImageTypes.Where(x => strBytes.ToLower().StartsWith(x.Key.ToLower())).First();
return SelectImageType.Value.ToString().ToLower();
}
}