¿Cómo se convierte una imagen de una ruta en la computadora del usuario a una cadena base64 en C #?
Por ejemplo, tengo la ruta a la imagen (en el formato C:/image/1.gif
) y me gustaría tener un URI de datos que data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..
represente la 1.gif
imagen devuelta.
Respuestas:
Prueba esto
fuente
image.RawFormat
.RawFormat
no es un especificador de formato de imagen; es una propiedad delimage
objeto, que devuelve en qué formato estaba la imagen cuando se leyó del archivo , lo que significa que, en este caso, devolvería el formato gif. Entonces, no cambia nada, excepto que en lugar de los bytes del archivo original real, tiene los bytes de la imagen como re-guardados en gif por el marco .Net.Obtenga la
byte[]
representación de la imagen de matriz de bytes ( ), luego useConvert.ToBase64String()
, st. Me gusta esto:Para convertir una imagen base4 de nuevo a System.Drawing.Image:
fuente
System.Drawing.Image
puedes usar st. así:var img = Image.FromStream(new MemoryStream(Convert.FromBase64String(base64String)));
Dado que a la mayoría de nosotros nos gustan los delineadores:
Si lo necesita como matriz de bytes Base64:
fuente
Aunque la respuesta más complicada está bien, encuentro que esto es mucho mejor
Es simple, no necesita volver a guardar y maneja diferentes formatos
fuente
Esta es la clase que escribí para este propósito:
fuente
Puede pasar fácilmente la ruta de la imagen para recuperar la cadena base64
Espero que esto ayude.
fuente
_image.RawFormat
) pero expone los datos como tipo mimeimage/jpg
Puede usar la
Server.Map
ruta para dar una ruta relativa y luego puede crear una imagen usando labase64
conversión o simplemente puede agregar unabase64
cadenaimage src
.fuente
De esa forma es más sencillo, donde pasas la imagen y luego el formato.
fuente
El siguiente código me funciona:
fuente
Basado en la respuesta más votada, actualizada para C # 8. Lo siguiente se puede usar de inmediato. Se agregó explícitamente
System.Drawing
antes,Image
ya que uno podría estar usando esa clase desde otro espacio de nombres de forma predeterminada.fuente
Puedes convertirlo así
Salida
fuente
Algo como eso
fuente
C#
etiqueta en la pregunta?