Usuário com melhor resposta
Erro ao salvar imagem

Pergunta
-
Tenho um handler que cria e salva uma imagem.
Ele funcionava local e também publicado no servidor, porém começou a dar um erro com a seguinte descrição "A generic error occurred in GDI+".
Para salvar a imagem no response eu faço o seguinte:
context.Response.ContentType = System.Net.Mime.MediaTypeNames.Image.Jpeg Dim bmp As Bitmap = New Bitmap(500, 80, System.Drawing.Imaging.PixelFormat.Format32bppArgb) Dim g As Graphics = Graphics.FromImage(bmp) g.FillRectangle(Brushes.White, 0, 0, 500, 80) '... 'Geração da imagem no graphics '... g.Save() bmp.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png)
Alguém tem alguma idéia do porque do erro?
Se existe algo que posso fazer para contorná-lo
[]'s
Luís Fernando Vendrame
Respostas
-
Resolvido
Salvo em um MemoryStream antes e depois escrevo os bytes no stream final
Exemplo:
public void GenerateImage(System.IO.Stream stream) { Bitmap bmp = new Bitmap(500, 80, System.Drawing.Imaging.PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(bmp); g.FillRectangle(Brushes.White, 0, 0, 500, 80); g.Save(); byte[] buffer = null; using (MemoryStream memStream = new MemoryStream()) { bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png); buffer = memStream.ToArray(); } stream.Write(buffer, 0, buffer.Length); }
[]'s
Luís Fernando Vendrame
- Marcado como Resposta Luís Fernando Vendrame quarta-feira, 6 de junho de 2012 17:07
Todas as Respostas
-
http://forums.asp.net/t/1766006.aspx/1
O Amor que Sinto por Ti, Apenas Deus e capaz de sentir e superar tal amor!
-
Olá Luís,
Pelo que pude pesquisar, isso deve ser problema de permissão de escrita no server (como dito por nosso amigo Seilor Bonácio) neste tópico:
http://social.msdn.microsoft.com/Forums/pt/aspnetpt/thread/b366e7f8-04f9-4ad6-b9a2-644e91a7ce6d
Esse aqui também provavelmente vai te ajudar.
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/285ad306-6f27-4f56-911a-57185d4c7c0c
-
-
Resolvido
Salvo em um MemoryStream antes e depois escrevo os bytes no stream final
Exemplo:
public void GenerateImage(System.IO.Stream stream) { Bitmap bmp = new Bitmap(500, 80, System.Drawing.Imaging.PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(bmp); g.FillRectangle(Brushes.White, 0, 0, 500, 80); g.Save(); byte[] buffer = null; using (MemoryStream memStream = new MemoryStream()) { bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png); buffer = memStream.ToArray(); } stream.Write(buffer, 0, buffer.Length); }
[]'s
Luís Fernando Vendrame
- Marcado como Resposta Luís Fernando Vendrame quarta-feira, 6 de junho de 2012 17:07