imagen convertir convert cadena b64 c# image base64

c# - convertir - Convierta la ruta de la imagen a la cadena base64



picturebox base64 c# (8)

¿Cómo se convierte una imagen a una cadena base64 en C #?

Por ejemplo, tengo la ruta a la imagen C:/image/1.gif y me gustaría que los data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD.. devueltos.


Algo como eso

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


Como a la mayoría de nosotros nos gusta los oneliners:

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

Si lo necesita como matriz de bytes Base64:

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


De esta forma es más simple, donde pasas la imagen y luego pasas el 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!"; } }


Esta es la clase que escribí para este propósito:

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


Obtenga la representación de la matriz de bytes ( byte[] ) de la imagen, luego use Convert.ToBase64String() , st. Me gusta esto:

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

Para convertir una imagen base4 de nuevo a System.Drawing.Image:

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


Prueba esto

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


Puede usar la ruta de Server.Map para dar una ruta relativa y luego puede crear una imagen usando la conversión de base64 o simplemente puede agregar una cadena de base64 a image src .

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


Puedes convertirlo así

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

Salida

QzovaW1hZ2UvMS5naWY=