Преобразование пути к изображению в строку base64
Как преобразовать изображение в строку base64 в C#?
например, у меня путь к картинке C:/image/1.gif
и как data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..
вернулся.
9 ответов:
попробуй такое
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()
, ул. как это:byte[] imageArray = System.IO.File.ReadAllBytes(@"image file path"); string base64ImageRepresentation = Convert.ToBase64String(imageArray);
чтобы преобразовать изображение base4 обратно в систему.Рисунок.Изображение:
var img = Image.FromStream(new MemoryStream(Convert.FromBase64String(base64String)));
Так как большинство из нас, как oneliners:
Convert.ToBase64String(File.ReadAllBytes(imageFilepath));
Если вам это нужно как массив байтов Base64:
Encoding.ASCII.GetBytes(Convert.ToBase64String(File.ReadAllBytes(imageFilepath)));
Это класс, который я написал для этого:
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();
можно использовать
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!"; } }
вы можете легко пройти путь к изображению, чтобы получить строку 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; } } }
надеюсь, что это поможет.
вы можете конвертировать его так
string test = @"C:/image/1.gif"; byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(test); string base64String = System.Convert.ToBase64String(bytes); Console.WriteLine("Base 64 string: " + base64String);
выход
QzovaW1hZ2UvMS5naWY=
что-то вроде этого
Function imgTo64(ByVal thePath As String) As String Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(thePath) Dim m As IO.MemoryStream = New IO.MemoryStream() img.Save(m, img.RawFormat) Dim imageBytes As Byte() = m.ToArray img.Dispose() Dim str64 = Convert.ToBase64String(imageBytes) Return str64 End Function