Yo lo que hago es escribir la variable Byte[] donde esta la imagen en un MemoryStream y luego ese Stream lo leo en un Objeto Bitmap.
Te pongo un ejemplo que tengo a mano, se encarga de descomprimir un archivo que esta en la DB
Código C#:
Ver originalpublic virtual System.IO.MemoryStream GetLayout()
{
System.IO.MemoryStream sw = new System.IO.MemoryStream();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(this.Plantilla))
{
using (System.IO.Compression.GZipStream gzipStream = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
{
int buffer = 1000000;
int offset = 0;
int totalBytesRead = 0;
Byte[] data = new Byte[buffer];
bool ft = true;
while (true)
{
int bytesRead = gzipStream.Read(data, offset, buffer);
if (ft == true && bytesRead == 0)
{
bytesRead = gzipStream.Read(data, offset, buffer);
}
Byte[] tempData = null;
ft = false;
if (bytesRead == 0)
{
tempData = data;
data = new Byte[totalBytesRead];
for (int i = 0; i < totalBytesRead; i++)
{
data[i] = tempData[i];
}
break;
}
tempData = data;
data = new Byte[data.Length + bytesRead];
tempData.CopyTo(data, 0);
offset += bytesRead;
totalBytesRead += bytesRead;
}
sw.Write(data, 0, data.Length);
return sw;
}
}
}
este metodo retorna una variable que luego la puedes usar con la clase Bitmap.
Saludos