2012-01-20 22 views
33

Actualmente estoy trabajando en una aplicación que requiere la conversión de alto rendimiento de una matriz de bytes sin relleno a PNG o JPEG. El formato de imagen no importa, siempre que sea rápido.Conversión de una matriz de bytes a PNG/JPG

He probado las bibliotecas .NET y el rendimiento es muy malo. ¿Alguien puede recomendar una buena biblioteca de freeware para esto?

EDIT: el byte [] es un mapa de bits de escala de grises de 8 bits

+0

No está claro a qué se refiere, ¿para qué sirve este conjunto de bytes? ¿Podrías dar más detalles? –

+0

Su pregunta no está del todo clara. ¿Qué representa el 'byte []'? ¿Es el contenido de la imagen real? ¿Es un mapa de bits descomprimido que desea guardar como JPG/PNG? – vcsjones

Respuesta

55

Usted debe ser capaz de hacer algo como esto:

byte[] bitmap = GetYourImage(); 

using(Image image = Image.FromStream(new MemoryStream(bitmap))) 
{ 
    image.Save("output.jpg", ImageFormat.Jpeg); // Or Png 
} 

Look here para obtener más información.

Espero que esto ayude.

+1

+1 ... más o menos la forma habitual de hacerlo. Dependiendo de los requisitos del usuario, sin embargo, no es necesario guardarlo en el sistema de archivos. –

+0

Perfecto. ¡Lo amo! Esto fue _exactamente_ lo que estaba buscando. –

+2

Hola, estoy intentando algo similar para convertir imágenes en bruto a jpeg butgetting * El parámetro no es válido * excepción. ¿Algunas ideas? 'byte [] bytes = System.IO.File.ReadAllBytes (@" C: \ Input.CR2 "); usando (Image image = Image.FromStream (new MemoryStream (bytes))) { image.Save (@ "C: \ output.jpg", ImageFormat.Jpeg); } ' –

0
+0

Sé que esto es para usar la biblioteca de programación, pero ¿cuál sería la línea de comando para la herramienta en ese caso? – user2284570

+0

@ user2284570 Si lo está utilizando en la línea de comandos, entonces estaría trabajando con un archivo y no con una matriz de bytes. Suponiendo que su entrada es PNG (una firma PNG seguida de trozos), entonces 'convert input.png output.jpg' probablemente funcione. – ahoffer

1

Hay dos problemas con esta pregunta:

suponiendo que tiene un mapa de bits de escala de grises, tiene dos factores a considerar:

  1. Para JPGS ... lo que la pérdida de calidad es tolerable ?
  2. Para pngs ... ¿qué nivel de compresión es tolerable? (Aunque para la mayoría de las cosas que he visto, no tienes tantas opciones, así que esta elección puede ser insignificante). Para cualquiera que piense que esta pregunta no tiene sentido: sí, puedes cambiar la cantidad de compresión/número de pases intentados para comprimir; echa un vistazo a Ifranview o algunos de sus complementos.

Responda estas preguntas, y entonces es posible que pueda encontrar su respuesta original.

Cuestiones relacionadas