

Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Saiba como manipular imagens, criar thumbnails e escrever texto sobre elas usando o framework asp.net. Este artigo fornece código passo a passo para salvar, manipular e criar thumbnails de imagens, além de explicar como escrever texto sobre elas.
Tipologia: Notas de estudo
1 / 3
Esta página não é visível na pré-visualização
Não perca as partes importantes!


Publicado em: 18/03/
Introdução
Neste artigo veremos como manipular imagens, escrever sobre elas e criar thumbnails de forma simples utilizando os recursos do framework.
Preparando
Na página Default.aspx vá na Toolbox e na aba Standart e adicione os componentes FileUpload e LinkButton. Nas propriedades do LinkButton mude o Text para "Enviar".
Figura 01. Exemplo.
Salvando e criando thumbnail
De um clique duplo sobre o LinkButton que assim irá para a parte onde iremos criar o código. Para salvar a imagem basta apenas adicionarmos: FileUpload1.SaveAs("caminho_e_nome"), nesse caso para facilitar, vamos criar uma string para o caminho e nome do arquivo. Então a ação ficará como na Listagem 01.
string arquivo = Server.MapPath(FileUpload1.FileName); FileUpload1.SaveAs(arquivo); Listagem 01. Salvando arquivo Agora que enviamos a imagem podemos abri-la e trabalhar com o ela o que for necessário, na parte superior desta página adicione: using System.Drawing.Imaging; Ótimo, já enviamos a imagem agora vamos criar a thumbnail, o primeiro passo será abrir a imagem enviada: System.Drawing.Image abre_imagem = System.Drawing.Image.FromFile(arquivo); //Abre foto Agora que ela está aberta podemos ver muitos dados dela, mas no momento só no interessa ver a altura e largura, para calcular a nova altura e largura proporcionalmente. Eu gosto de criar as thumbnails com a mesma altura então nesse caso vou deixar a altura máxima com 70px e a largura calcularemos em função disso, para fazer isso adicione a seguinte linha: int largura = abre_imagem.Width * 70 / abre_imagem.Height; // calcula largura em proporção O próximo passo será adicionar os códigos conforme a Listagem 02 System.Drawing.Image.GetThumbnailImageAbort dummyCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); System.Drawing.Image thumbNailImg = abre_imagem.GetThumbnailImage(largura, 70, dummyCallBack, IntPtr.Zero); //dados dentro dos parenteses: largura, altura... //onde está "thumbnail.jpg" mude para o nome desejad para a thumbnail thumbNailImg.Save(Server.MapPath("thumbnail.jpg"));
//fechando conexoes thumbNailImg.Dispose(); abre_imagem.Dispose(); Listagem 02. Trabalhando thumbnail Para facilitar as explicações sobre a Listagem 02 eu adicionei nela alguns comentários, que facilitarão a compreenção. Está quase tudo pronto, agora só falta adicionarmos a função para callback. Você irá adicioná-la fora da função LinkButton1_Click, o código completo de sua página ficará semelhante a Listagem 03:
using System.Drawing.Imaging; using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
} protected void LinkButton1_Click(object sender, EventArgs e) { string arquivo = Server.MapPath(FileUpload1.FileName); FileUpload1.SaveAs(arquivo);
//Abre foto System.Drawing.Image abre_imagem = System.Drawing.Image.FromFile(arquivo);
// calcula largura em proporção int largura = abre_imagem.Width * 70 / abre_imagem.Height;
System.Drawing.Image.GetThumbnailImageAbort dummyCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); System.Drawing.Image thumbNailImg = abre_imagem.GetThumbnailImage(largura, 70, dummyCallBack, IntPtr.Zero); //dados dentro dos parenteses: largura, altura... thumbNailImg.Save(Server.MapPath("thumbnail.jpg")); //salva thumbnail
//fechando conexoes thumbNailImg.Dispose(); abre_imagem.Dispose();
public bool ThumbnailCallback() { return false; } } Listagem 03. Página completa. Escrevendo sobre imagens
Para escrever sobre a imagem é simples, adicione na parte superior de sua página: using System.Drawing; using System.Drawing.Drawing2D; Para facilitar o entendimento, abaixo irei mostrar o código completo e comentá-lo. O código deverá ser adicionado depois da linha onde fechamos os objetos na criação das thumbnails. Bitmap bmp = new Bitmap(arquivo); //Criando bitmap do arquivo Graphics g = Graphics.FromImage(bmp); //Criando gráfico do arquivo
Rectangle treta = new Rectangle(0, bmp.Height / 2, bmp.Width, bmp.Height); //criando retangulo, os dados são na seguinte ordem: //onde começa o texto(coloquei zero pois mando alinha ao centro na função abaixo), //altura do texto(coloquei no centro da imagem), //largura do retangulo(a mesma largura da imagem),