Usuário com melhor resposta
Dimunir os pixels de uma imagem

Pergunta
-
Pessoal, estou fazendo um select nas imagens do Banco, mas muitas delas estão muito grandes, para apresentar na tela está demorando muito para carregar.
Tem como definir a quantidade de pixel para apresentação?
while (dr.Read())
{
if (dr.HasRows)
{
//ImgDef();
Label1.Text = "NADA";
Response.ContentType = "image/jpeg";
Response.BinaryWrite((byte[])dr["IMAGEM"]);
}
}Junior Santana
- Tipo Alterado Seilor Bonancio JuniorModerator terça-feira, 3 de julho de 2012 13:11
Respostas
-
Junior o correto seria talvez vc reduzir a qualidade para apresentar
http://www.codeproject.com/Articles/11143/Image-Resizing-outperform-GDI
Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
- Sugerido como Resposta EduardoPiresMVP terça-feira, 3 de julho de 2012 13:41
- Marcado como Resposta Jr_inc quarta-feira, 4 de julho de 2012 12:11
Todas as Respostas
-
-
Junior o correto seria talvez vc reduzir a qualidade para apresentar
http://www.codeproject.com/Articles/11143/Image-Resizing-outperform-GDI
Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
- Sugerido como Resposta EduardoPiresMVP terça-feira, 3 de julho de 2012 13:41
- Marcado como Resposta Jr_inc quarta-feira, 4 de julho de 2012 12:11
-
Olá,
Utilizo um código para reduzir e compactar imagens via upload e salvá-las no servidor.
Segue abaixo trecho para compactar e reduzir o tamanho da imagem:
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
private void SaveJPGWithCompressionSetting(System.Drawing.Image image, MemoryStream streamDestino , long qualidadeCompressao)
{
EncoderParameters eps = new EncoderParameters(1);
eps.Param[0] = new EncoderParameter(Encoder.Quality, qualidadeCompressao);
ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
image.Save(streamDestino, ici, eps);
}//método para ser passado no parâmetro
private bool MeuRetorno()
{
return false;
}//Criar um método para passar os bytes da imagem que será compactada e reduzida com o código abaixo:
MemoryStream StreamImagemEntrada = new MemoryStream((byte[])dr["IMAGEM"]);
System.Drawing.Image ImagemOrigem = System.Drawing.Image.FromStream(StreamImagemEntrada);
double altura = ImagemOrigem.Height;
double largura = ImagemOrigem.Width;
//altura ou largura máxima de 600
while (largura > 600 && altura > 600)
{
largura = largura * 0.99;
altura = altura * 0.99;
}
ImagemOrigem = ImagemOrigem.GetThumbnailImage(Convert.ToInt32(largura), Convert.ToInt32(altura),
new System.Drawing.Image.GetThumbnailImageAbort(MeuRetorno), IntPtr.Zero);
MemoryStream StreamImagemSaida = new MemoryStream();
SaveJPGWithCompressionSetting(ImagemOrigem, StreamImagemSaida, 80);
Response.ContentType = "image/jpeg";
Response.BinaryWrite(StreamImagemSaida.ToArray());
StreamImagemEntrada.Close();
StreamImagemEntrada.Dispose();
StreamImagemSaida.Close();
StreamImagemSaida.Dispose();