C#で画像をbase64文字列に変換するにはどうすればよいですか?
たとえば、画像C:/image/1.gif
へのパスがあり、data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..
が返されるようにします。
これを試して
using (Image image = Image.FromFile(Path))
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
画像のバイト配列(byte[]
)表現を取得し、Convert.ToBase64String()
、stを使用します。このような:
byte[] imageArray = System.IO.File.ReadAllBytes(@"image file path");
string base64ImageRepresentation = Convert.ToBase64String(imageArray);
Base4画像をSystem.Drawing.Imageに戻すには:
var img = Image.FromStream(new MemoryStream(Convert.FromBase64String(base64String)));
私たちのほとんどはonelinersが好きなので:
Convert.ToBase64String(File.ReadAllBytes(imageFilepath));
Base64バイト配列として必要な場合:
Encoding.ASCII.GetBytes(Convert.ToBase64String(File.ReadAllBytes(imageFilepath)));
より複雑な答えは大丈夫ですが、これははるかに優れていることがわかります
var base64String= Convert.ToBase64String(File.ReadAllBytes(pathOfPic));
簡単で、別の形式を保存して処理する必要はありません
これは私がこの目的のために書いたクラスです:
public class Base64Image
{
public static Base64Image Parse(string base64Content)
{
if (string.IsNullOrEmpty(base64Content))
{
throw new ArgumentNullException(nameof(base64Content));
}
int indexOfSemiColon = base64Content.IndexOf(";", StringComparison.OrdinalIgnoreCase);
string dataLabel = base64Content.Substring(0, indexOfSemiColon);
string contentType = dataLabel.Split(':').Last();
var startIndex = base64Content.IndexOf("base64,", StringComparison.OrdinalIgnoreCase) + 7;
var fileContents = base64Content.Substring(startIndex);
var bytes = Convert.FromBase64String(fileContents);
return new Base64Image
{
ContentType = contentType,
FileContents = bytes
};
}
public string ContentType { get; set; }
public byte[] FileContents { get; set; }
public override string ToString()
{
return $"data:{ContentType};base64,{Convert.ToBase64String(FileContents)}";
}
}
var base64Img = new Base64Image {
FileContents = File.ReadAllBytes("Path to image"),
ContentType="image/png"
};
string base64EncodedImg = base64Img.ToString();
画像のパスを簡単に渡してbase64文字列を取得できます
public static string ImageToBase64(string _imagePath)
{
string _base64String = null;
using (System.Drawing.Image _image = System.Drawing.Image.FromFile(_imagePath))
{
using (MemoryStream _mStream = new MemoryStream())
{
_image.Save(_mStream, _image.RawFormat);
byte[] _imageBytes = _mStream.ToArray();
_base64String = Convert.ToBase64String(_imageBytes);
return "data:image/jpg;base64," + _base64String;
}
}
}
これが役立つことを願っています。
Server.Map
パスを使用して相対パスを指定し、base64
変換を使用してイメージを作成するか、base64
文字列をimage src
に追加することができます。
byte[] imageArray = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Upload_Image.png"));
string base64ImageRepresentation = Convert.ToBase64String(imageArray);
そうすればより簡単になり、画像を渡してからフォーマットを渡すことができます。
private static string ImageToBase64(Image image)
{
try
{
var imageStream = new MemoryStream();
image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Bmp);
imageStream.Position = 0;
var imageBytes = imageStream.ToArray();
var ImageBase64 = Convert.ToBase64String(imageBytes);
return ImageBase64;
}
catch (Exception ex)
{
return "Error converting image to base64!";
}
}