Convertir imagen a matriz de bytes en C#

Saad Aslam 12 octubre 2023
  1. Descripción general de la matriz de bytes
  2. Utilice Flujo de memoria para convertir la imagen en una matriz de bytes en C#
  3. Utilice ImageConverter para convertir la imagen en una matriz de bytes en C#
  4. Convertir matriz de bytes en imagen en C#
Convertir imagen a matriz de bytes en C#

Este tutorial nos enseñará cómo convertir una imagen en una matriz de bytes usando las clases Memory Stream y Image Converter. Además, comprenderemos mejor el proceso de convertir una matriz de bytes de C# en una imagen.

Descripción general de la matriz de bytes

Una colección de datos binarios a menudo se almacena en un formato conocido como matriz de bytes, que es una matriz de bytes. Por ejemplo, la información relativa a cada píxel de una imagen se almacena dentro de la matriz de bytes que constituye la imagen.

En la matriz de bytes, podemos guardar la representación binaria del contenido de cualquier archivo. De la misma manera, inicializamos el arreglo regular con los bytes; también podemos inicializar la matriz de bytes con los bytes.

Utilice Flujo de memoria para convertir la imagen en una matriz de bytes en C#

.NET Framework proporciona soporte para una amplia variedad de formatos de imagen. El objeto Picture tiene un método de guardado que permite a los desarrolladores guardar una imagen en un archivo en cualquiera de estos formatos.

Código:

public byte[] imgToByteArray(Image img) {
  using (MemoryStream mStream = new MemoryStream()) {
    img.Save(mStream, img.RawFormat);
    return mStream.ToArray();
  }
}

En el ejemplo anterior, escribimos una función llamada imgToByteArray que acepta una entrada img de tipo Imagen como argumento. Dentro de la línea using de este método, creamos una instancia de la clase MemoryStream().

Luego aplicamos la función Save() al objeto MemoryStream durante esta instancia mientras se especifica un formato de imagen. Ahora que el elemento ya está almacenado en la memoria, el método ToArray() disponible en el objeto MemoryStream puede transformarlo rápida y eficientemente en una matriz de bytes.

Utilice ImageConverter para convertir la imagen en una matriz de bytes en C#

Código:

public static byte[] imgToByteConverter(Image inImg) {
  ImageConverter imgCon = new ImageConverter();
  return (byte[])imgCon.ConvertTo(inImg, typeof(byte[]));
}

Creamos una función llamada imgToByteConverter(). Toma una entrada llamada inImg y tiene como parámetro el tipo Imagen.

Dentro de este método, creamos una instancia de la clase ImageConverter(). Después de convertir la imagen que se le envió utilizando el método .ConvertTo(), esta función devolverá los bytes que se convirtieron a su formato original.

Convertir matriz de bytes en imagen en C#

Convertir una imagen en una matriz de bytes es algo con lo que estamos familiarizados. Ahora que se ha cargado la matriz de bytes, veremos la función que la transformará en una imagen para que podamos utilizar la imagen en nuestro código en el futuro.

Código:

public Image byteArrayToImage(byte[] byteArrayIn) {
  using (MemoryStream mStream = new MemoryStream(byteArrayIn)) {
    return Image.FromStream(mStream);
  }
}

Se crea una función llamada byteArrayToImage(). Toma una entrada llamada byteArrayIn y tiene el tipo byte[] como parámetro.

Este método contiene una instrucción using que inicializa una instancia de la clase MemoryStream proporcionándole los bytes almacenados en la variable byteArrayIn. Luego, los bytes se transforman en una imagen con la ayuda del método .FromStream(), que solicita un argumento denominado mStream y lo devuelve.

Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Artículo relacionado - Csharp Array