Conheça o Plugfeed | » Início » Programação » ASP » Personalizando Imagens com ASP, parte 2
Conheça o Plugfeed | » Início » Programação » ASP » Personalizando Imagens com ASP, parte 2 -->
 
Avaliação: | Publicado em: 04/09/2005
Personalizando Imagens com ASP, parte 2
Johnatan Oliveira Graduando em Tec. Informática e Aplicações Web, é desenvolvedor ASP/SQL Server e atua no mercado web a cerca de 4 anos como desenvolvedor e design de interfaces. É apaixonado por Flash MX/Action Script. Atualmente é Diretor de Projetos do Portal Plugmasters, colaborador da Revista WWW.COM.BR, onde escreve sobre ASP e Flash e designer/programador de uma agência web. Além de manter o site johnatan.net.


Personalizando Imagens com ASP, parte 2

Olá pessoal! Vamos curtir a 2° Parte do nosso artigo! Bom estudo!

function.asp

Enfim chegamos as nossas funções, chaves mestras deste nosso projeto.

Função para renomear imagem.

Vamos inicialmente a função para renomear nossa imagem. Bom, na linha 20 do arquivo upload_foto.asp, utilizamos a seguinte sintese:

20 renomeiafoto "fotos/" &objFile.Filename, "fotos/"&nome
Temos ai 2 parâmetros passados: o 1° "fotos/"&objFile.Filename, que é o local e nome da imagem inicial, e o 2° "fotos/"&nome, que é o local e o novo nome criado.(linha 19)

Legal, agora vamos implementar nossa função.

Na linha 1 criamos nossa função.
Na linha 2 cria um objeto do tipo FileSystemObject.
Na linha 3 o método FileExists retorna True caso o parâmetro passado ( server.MapPath(file) ) exista.
Na linha 4 o método CopyFile faz uma cópia da nossa imagem, trocando o nome dela.
Na linha 5 deletamos a imagem que foi copiada, restando somente a cópia, já com o novo nome passado no parâmetro.
Na linha 6, 7 e 8, finalizamos nosso if, destruímos o objeto e encerramos nossa função, respectivamente.

É chegada a melhor parte do nosso projeto. Até agora nós: Fizemos upload da imagem e trocamos o nome dela, agora iremos personalizá-la.

Função para personalização da imagem

Na linha 21 do arquivo upload_foto.asp, logo após renomearmos o arquivo, utilizamos a seguinte síntese:


Temos agora 8 parâmetros passados. São eles: Caminho da origem da imagem, Destino da Imagem Personalizada, o nome da imagem, identificação que permite nossa função saber se a imagem vai ser redimensionada de forma proporcional ou manual, a largura final, a altura final, o valor da qualidade de compactação, e o nível de nitidez.


Vamos a função.

Na linha 1 declaramos as variáveis que iremos utilizar. Na linha 2 criamos nossa função e seus parâmetros. Na linha 3 detectamos onde esta localizado a imagem no servidor (é necessário ter o caminho físico) e preenchemos a variável JpegImage. Na linha 4 criamos nosso objeto AspJpeg, de acordo com nosso componente. Na linha 5 abrimos a imagem de acordo com a variável JpegImage.

Iremos analizar o valor da variável prop, especificada com o numero 2 no nosso código. Saberemos com ela se a imagem vai ser redimensionada de forma proporcional ou manual.


Caso prop = 0 a função não altera a imagem. Caso prop = 1 a função redimensiona a imagem de forma proporcional. O sistema analiza a dimensão determinada e altera de forma proporcional. Caso prop = 2 ( nosso caso em questão ). O programador determinará o tamanho, tanto largura, quanto altura. Só programei essa funcionalidade pois você poderá usa-la usar este projeto em outros meios.

Nas linhas 6,7 e 8 caso estivéssemos utilizando prop=0, apenas deixaríamos a imagem como ela esta.


Nas linhas de 9 a 16 caso estivéssemos utilizando prop=1, apenas recebemos o valor da altura(linha 11) e da largura(linha14), caso ambos diferentes de vazio e fazendo um calculo simples para achar uma melhor proporção para a imagem.

Agora vamos ao nosso caso prop = 2.


Nas linhas 18 e 19 recebemos a largura e altura.


Nas linhas de 21 a 23 determinamos o nível de nitidez. O valor passado no parâmetro deve ser maior que 100.


Na linha 25 determinamos o nível de compactação da imagem. O valor passado deve estar entre 0 e 100.                

                                  
Desenhando um Quadrado na Imagem


Na Linha 26 escolhemos a cor da caneta. Na linha 27 a largura da caneta, e na linha 28 o tipo da linha e dimensões do quadrado, sendo: AspJpeg.Canvas.Line(posição esquerda, topo, direita, inferior).

Desenhando uma Borda na Imagem
                                  
29 AspJpeg.Canvas.Pen.Color = &H990000
30 AspJpeg.Canvas.Pen.Width = 2
31 AspJpeg.Canvas.Brush.Solid = false
32 AspJpeg.Canvas.Bar 1, 1, AspJpeg.Width, AspJpeg.Height

O procedimento é igual ao da criação do quadrado, só que no caso da borda, usaremos o preenchimento do quadrado transparente e o tamanho, o mesmo da imagem!
           
Na linha 29 escolhemos a cor da caneta. Na linha 30 a altura da ponta. Na linha 31 determinamos se o peenchimento é solido ou tranparente. Neste caso, false = transparent. Na linha 32 efetuamos o desenho dentro das especificações. Canvas.Bar(posição esquerda, topo, direita, inferior).

Colocando texto sobre imagem
                                  
33 AspJpeg.Canvas.Font.Color = &HFFFFFF' branco
34 AspJpeg.Canvas.Font.Family = "Tahoma"
35 AspJpeg.Canvas.Font.Bold = True
36 AspJpeg.Canvas.Font.Size = 14
37 AspJpeg.Canvas.Print AspJpeg.Width-340, AspJpeg.Height-18, "w w w . j o h n a t a n . n e t –Matéria http://www.com.br/"

Na linha 33 escolhemos a cor da fonte. Na linha 34 o tipo de fonte a ser usada. Na linha 35 especificamos se vamos ou não usar negrito. Na linha 36 o tamanho da fonte. Na linha 37 imprimimos o texto especificado, seguindo a posição. Canvas.Print(posição x, y, texto).

Colocando Marca D Água na Imagem
                                  
38 Set JpegLogo = Server.CreateObject("Persits.Jpeg")
39 JpegLogoPath = Server.MapPath("img/marca.gif")
40 JpegLogo.Open JpegLogoPath
41 AspJpeg.DrawImage AspJpeg.Width-630, AspJpeg.Height-120, JpegLogo, , &H000000

Na linha 38 criamos um novo objeto junto ao componente. Na linha 39 determinamos o caminho físico da imagem a ser colocada por cima da nossa. Na linha 40 abrimos a imagem especificada e na Linha 41 fundimos as imagens.
DrawImage posicaox,posicaoy,imagem,opacidade(1 total, 0.5 - 50%),e cor a ser ignorada
                                  
42 AspJpeg.Save server.MapPath(Path_dest&img)                           
43 set AspJpeg = nothing                   
44 end function
%>

Na linha 42 salvamos a imagem e nas linhas 43 e 44 destruímos o objeto e finalizamos a função.

Resultado Final

Original

Bom, obrigado pela atenção. Bom estudo.

Este artigo é a parte 2 de 2 da seguinte série:
  1. Personalizando Imagens com ASP, parte 1
  2. Personalizando Imagens com ASP, parte 2

Evandro Maximillian <vadinho_mx@hotmail.com>
cara, esse artigo é exelente só falta o "class_adrianforbes.asp",
já que você citou ele deveria coloca-lo, pois nem todo mundo tem condições e tempo pra comprar uma certa edição da revista pra pegar somente 1 arquivo, você está de parabens, mas veja se pode me mandar o arquivo por E-mail... embora o ideal seria dispônibiliza-lo para todos... Obrigado.
como eu consigo essa classe class_adrianforbes.asp ??? preciso saber pra poder fazer rodar esse script

obrigado!
Bom dia!

Cara gostei muito da sua reportagem como... Bom estou me embananando com os códigos e gostaria de solicitar para que me enviasse por e-mail, isso é se vc puder é claro... o código completo, pois não sei qual a edição que vc escreveu e não achei no site que é agora EUROPA, aguardo seu retorno e agradeço por ser um colaborador para nossas dúvidas.
Tenha um bom dia!
Tem como enviar essa classe?
O artigo é perfeito, porem precisamos dessa classe.