Converti il ​​percorso dell’immagine nella stringa base64

Come si converte un’immagine in una stringa base64 in C #?

Ad esempio, ho il percorso per l’immagine C:/image/1.gif e vorrei i data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD.. restituiti.

Prova questo

 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; } } 

Ottenere la rappresentazione dell’array di byte ( byte[] ) dell’immagine, quindi utilizzare Convert.ToBase64String() , st. come questo:

 byte[] imageArray = System.IO.File.ReadAllBytes(@"image file path"); string base64ImageRepresentation = Convert.ToBase64String(imageArray); 

Per convertire un’immagine di base4 in un System.Drawing.Image:

 var img = Image.FromStream(new MemoryStream(Convert.FromBase64String(base64String))); 

Poiché la maggior parte di noi ama i oneliner:

 Convert.ToBase64String(File.ReadAllBytes(imageFilepath)); 

Se ti serve come array di byte Base64:

 Encoding.ASCII.GetBytes(Convert.ToBase64String(File.ReadAllBytes(imageFilepath))); 

Questa è la class che ho scritto per questo scopo:

 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(); 

È ansible utilizzare il percorso Server.Map per fornire un percorso relativo e quindi è ansible creare un’immagine utilizzando la conversione base64 oppure è sufficiente aggiungere la stringa base64 image src .

 byte[] imageArray = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Upload_Image.png")); string base64ImageRepresentation = Convert.ToBase64String(imageArray); 

In questo modo è più semplice, in cui si passa l’immagine e quindi si passa il formato.

 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!"; } } 

Puoi convertirlo in questo modo

  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); 

Produzione

  QzovaW1hZ2UvMS5naWY= 

Qualcosa del genere

  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