Prezados
Em uma das rotinas de nossa aplicação SILVERLIGHT efetuamos captura de imagem pela WEB CAM.
Utilizamos no lado do cliente o WritableBitmap e geramos o byte[]; passamos tudo em uma instância de uma classe para o WCF e ele faz as operações na BLL, no caso grava a informação no banco inclusive a imagem. Até ai tudo bem, consigo recuperar a imagem fazendo
o processo inverso e tudo funciona.
Agora, identificamos a necessidade de gravar esta imagem em uma pasta no servidor. Entendo que como tenho o byte[] o mais coerente é eu na minha bll fazer tal processamento gravando o arquivo na pasta do próprio servidor.
Fiz vários testes de várias formas, e ocorre um erro "Parâmetro Inválido" qdo converto Image.FromStrem passando o MemoryStream.
Alguém tem alguma ideia?
Segue os códigos:
WriteableBitmap bmpImagemPessoa = new WriteableBitmap(tmpImage, null);
//Faz a conversão e atribui a instância
objPessoaInternaNEW.Imagem = fotoPessoaInternaImage.Source != null ? bmpImagemPessoa.ToByteArray() : null;
Depois isso ele chama o assync passando o objeto cai na bll...
Aqui a classe que faz a conversão:
public static byte[] ToByteArray(this WriteableBitmap bmp)
{
int[] p = bmp.Pixels;
int len = p.Length * 4;
byte[] result = new byte[len]; // ARGB
Buffer.BlockCopy(p, 0, result, 0, len);
return result;
}
Agora na BLL ou seja em um processo de servidor, como salvar esse byte[] em jpg em uma pasta no servidor?
Grato
Eduardo Agostinho Analista Programador - C# Developer