Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Niorch

Aspjpeg e PNG/GIF transparente

Recommended Posts

Pessoal, Antes de postar aqui, pesquisei o dia inteiro tanto no forum quanto no google mas não achei nada.

 

Seguinte.......

Estou usando o ASPJPEG e preciso criar thumbnails de imagens PNG transparente.

Vi no manual do fabricante como fazer um PNG em cima de um JPEG (Marca d'agua), mas não é isso que eu preciso.

 

 

Basicamente preciso pegar um imagen PNG e criar um Thumbnail exatamente com as mesmas caracteristicas, quando eu faço isso, o componente cria o thumbnail.PNG, mas o fundo não fica transparente.

 

Já fiz um milhão de tentativas, mas o código base é bem simples:

Chamo a subrotina passano os parametros Origem e Destino (incluindo o nome do arquivo)

e o tamanho do Width.

 

Function FIXA_LARG_IMG(origem,destino,FIXA_LARGURA)	
'########## REDIMENSIONA A IMAGEM  ##########
	Set Gif = Server.CreateObject("Persits.Jpeg")
	Gif.Open(Server.MapPath(origem))
	GIF.Width =FIXA_LARGURA
	GIF.Height=GIF.OriginalHeight * FIXA_LARGURA / GIF.OriginalWidth	
	Gif.Save (Server.MapPath(destino))
	Gif.close
	Set Gif = Nothing
end function

 

 

 

 

 

Obs. A versão do componente LOCAWEB (Onde esta sendo feito o site/sistema) é 1.8.0.1

 

Me ajudem.... não sei mais o que fazer, estou preso nessa merd...... !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A partir da Versão 1.6, é capaz de extrair informação de cor de transparência das imagens GIF através da propriedade TransparencyColor. Esta propriedade permite que você substitua a cor de transparência de uma imagem com uma cor arbitrária (como branco) para redimensionar a imagem ou torná-lo outra imagem utilizando o método

 

Canvas.DrawImage.

 

Para verificar se a imagem tem uma cor de transparência, use a propriedadeTrasparencyColorExists .

 

Nem todas os transparência habilitada em imagens GIF podem ser apresentadas correctamente, usando o método DrawImage. Partir da Versão 1.8, você deve usar o método DrawPNG.

 

olha este código para marca d'agua

 

<%
' Caminho das imagens
Path1 = Server.MapPath("/site/piscina.jpg")
Path2 = Server.MapPath("/site/logo.gif")

' Instancia Componente
Set Jpeg1 = Server.CreateObject("Persits.Jpeg")
Set Jpeg2 = Server.CreateObject("Persits.Jpeg")

' Caminho das imagens
Jpeg1.Open Path1
Jpeg2.Open Path2


' Executa as funcoes para inserir a marca com transparencia de fundo branco FFFFFF
Jpeg1.Canvas.DrawImage 0, (Jpeg1.Height/1)-(Jpeg2.Height), Jpeg2, 2, &HFFFFFF, 10


' Salva a Imagem com Marca
Jpeg1.Save Server.MapPath("/site/foto5.jpg")


' Mostra a versao do componente
'Response.Write "Component Version: " & Jpeg1.Version & "<hr>"
%>

<img border="0" src="/site/foto5.jpg">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum e jonathandj.

 

Isso que vcs comentaram eu ja tinha visto e inclusive testado.

 

No meu caso isso não adianta nada, eu não quero substituir a Transparencia por uma cor de fundo qualquer, e sim, MANTER transparente.

 

Com a propriedade comentada ("TransparencyColor") eu consigo identificar a transparencia e até colocar uma cor de fundo que eu quiser no lugar da transparencia, isso eu já tinha até testado e realmente funciona, mas a questão é que eu não quero colocar nenhuma cor de fundo, e sim deixar transparente

 

 

Quanto a MARCA D'AGUA tambem não é o que eu preciso, isso eu tb ja tinha visto, minha necessidade não é sobrepor imagens em outra, como logos, marca d'agua e sim criar thumbnails de PNGs mantendo a transparencia.

 

Basta eu redimensionar a imagen que ela já perde a transparencia.

 

 

O que eu preciso nada mais é do que REDIMENSIONAR IMAGENS PNG/GIF (TRANSPARENCIA), E MANTER A TRANSPARENCIA DELAS, e não consigo fazer isso por nada.

 

Estou certo de que deve haver alguma forma, mas não sei qual.

 

 

Obs: O servidor LocaWeb não possui outros componente p/ tratamento de imagens, então... terei que me virar com esse mesmo.

 

Continuo no aguardo.

 

De qq forma valeu ai pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai pessoal????

 

Ninguem????

 

Preciso muuuuuito disso.

 

Agradeço desde já !!!!

 

 

 

Falowwwwwwwwwwwwwwwwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Patrique,

 

Como estou tentando resolver isso separadamente primeiro, ele não esta inserido no meu sistema, fiz 2 páginas ASP apenas p/ testar isso.

 

Fiz diversos testes e alteração no código pesquisas e...... nada.

 

Gerei imagem transparente no photoshop tanto PNG quanto GIF p/ testar

 

 

Tenho 2 páginas.

 

Página 1 "TESTE.ASP"

(Principal)

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="932"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<!--#include file="TRATAMENTO_IMAGENS.asp"-->
<%

call 	FIXA_LARG_IMG("fig1.gif","fig2.gif",300)
%>
</body>
</html>

Página 2 "TRATAMENTO_IMAGENS.asp"

(Sub Rotina, onde apenas redimensiono a imagem, e basta isso p/ ja perder o fundo transparente, pois o thumbnail gerado FIG2.gif já não vem transparente )

 

Obs: Testei tambem com PNG e nada.

 

Function FIXA_LARG_IMG(origem,destino,FIXA_LARGURA)      
'########## REDIMENSIONA A IMAGEM  ##########'
        Set Gif = Server.CreateObject("Persits.Jpeg") 
        Gif.Open(Server.MapPath(origem)) 
        GIF.Width =FIXA_LARGURA 
' ===== Calcula o novo Height ====='
        GIF.Height=GIF.OriginalHeight * FIXA_LARGURA / GIF.OriginalWidth         
        Gif.Save (Server.MapPath(destino)) 
        Gif.close 
        Set Gif = Nothing 
end function

 

Fiz diversos testes usando tambem a função "GIF.ReplaceColor GIF.TransparencyColor, &HFFFFFF" e funciona, mas como já disse não quero colocar um fundo com alguma cor, quero TRANSPARENTE.

 

Fiz tambem outros testes.

 

Repare que estou fazendo isso separadamente p/ só depois de conseguir resolver isso separadamente, vou voltar p/ meu sistema e inserir lá o código.

 

 

Fico aguardando ansioso.

 

 

Valwwwwwwwwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

Fiz o teste com essa imagen e nada.

essa imagem q você passou creio que pegou do manual da PERSIST que eu tb ja tinha visto.

 

Com essa imagem ainda entoru uns pontos PRETOS ainda, acho que essa imagem sim não esta com transparencia 100%.

 

Bom... de qq forma o fato é que ainda NADA.......

Nossa... ja to cansado...

 

é fod.....

 

 

Continuo no aguardo, se tiver uma luz ai to esperando.

 

 

 

Valeu hein !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você usando o método DrawPNG, naun conseguiu

você pode consultar o manual do componente, tb

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

Então..... Eu li e reli o manual inumeras vezes antes.

 

Até onde eu entendi o comando DRAWPNG é usado p/ quando se quer criar uma marca d'agua.

ou seja, pego minha imagem principal, e insiro uma menor (marca d'agua transparente PNG) em cima da principal.

Exemplo:

jpeg.Open "c:\path\house123.jpg"
jpeg.Canvas.DrawPNG 10, 10, "c:\path\logo.png"
jpeg.Save "c:\path\out.jpg" 
Repare que a imagem final (Principal + marca d'agua)nem é PNG nem GIF e sim JPG, a transparencia é apenas na imagem marca d'agua que será inserida em cima da imagem principal nesse caso JPG

 

tentei usar o DRAWPNG sozinho e da pau, diz que não reconhece.

 

Veja o link:

http://www.aspjpeg.com/manual_06.html#6_3

Compartilhar este post


Link para o post
Compartilhar em outros sites

velho achei um exemplo aqui que eu fiz a alguns meses atrás, lembro-me que ele estava funcionando certinho, por isso vou te passar ae tu faça os testes ae e veja o que pode esta acontecendo.

 

<%
response.buffer = true

Server.ScriptTimeout = 9999

Response.Expires = 0

Function MapaAnimado(numeral)
strURL = "http://maps.google.com/staticmap?center=-22.466264,-44.451767&zoom="& numeral &"&size=600x630&maptype=satellite&key=ABQIAAAAm3_hEM2rjcydZ4-G3ZLnZxQGDwfolOEAvUGmNN27MQhUpy2Y5RT2hTABZH59D9FczK0sLE8okVP5zQ&sensor=false"
strLocalFileName = "satelite-"& numeral &".jpg"

Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP")
Set objBinaryStream = CreateObject("ADODB.Stream")

objXMLHTTP.Open "GET", strURL , false
objXMLHTTP.Send()
objBinaryStream.Type = 1

objBinaryStream.Open
objBinaryStream.Write objXMLHTTP.responseBody
objBinaryStream.SaveToFile server.MapPath("img-satelite/" & strLocalFileName), 2

Set objXMLHTTP = Nothing
Set objBinaryStream = Nothing

Response.Flush()

Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open(Server.MapPath("img-satelite/"& strLocalFileName &""))

jpeg.Canvas.DrawPNG 285, 276, "C:\Inetpub\bugtv\mascara.png"

jpeg.Crop 0, 0, jpeg.Width, jpeg.Height - 30

jpeg.Save(Server.MapPath("img-satelite/"& strLocalFileName &""))
Jpeg.SendBinary

Set Jpeg = Nothing

Response.write("imagem criada com sucesso")

Response.Clear()

End Function

Dim i
For i=1 to 8
MapaAnimado(i)
Next
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é isso não,

 

Esse código, analisando a parte do ASPJPEG faz a mesma coisa que já haviamos comentado, MARCAD'AGUA, no seu caso nomeado como MASCARA.PNG, e coloca em cima da IMAGEM PRINCIPAL, vinda da outra rotina.

 

 

Repare que a imagem gerada pelo ASPJPEG nem é PNG e sim jpg.

 

Instrução:

jpeg.Save(Server.MapPath("img-satelite/"& strLocalFileName &""))

Onde conteudo da variavel "strLocalFileName" = xxxxxxx.jpg

 

Instrução:

strLocalFileName = "satelite-"& numeral &".jpg"

 

 

Continuo no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer aplicar a transparencia em um png no momento da criação da miniatura, é isso? se for, não é possível, no maximo que conseguira é mudar a cor de fundo como explicaram para você, mais fazer transparencia não será possível, pelo proprio manual deles da para ver isso, não tem nada a respeito de aplicar transparencia em imagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.... é isso que eu preciso, redimensionar sem perder as propriedades.

 

Repare que não quero criar transparencia e sim mante-la, pois a imagem original já será transparente, o que eu quero é redimensiona-la (Thumbnails) mantendo a transparencia (PNG ou GIF)

 

Quanto a ser possivel ou não, afirmo que É POSSIVEL SIM, a questão é que até o momento só vi essa opção apenas a partir de ASPJPEG 2.0, e a versão instalada no meu plano de servidor (Locaweb) é ASPJPEG 1.8.0.1 conforme comentado no inicio deste tópico.

 

Veja o link abaixo que fala da opção de redimensionar GIFs mantendo as animações como tambem a transparência.

 

http://www.aspjpeg.com/manual_09.html#9_3

 

 

Posso estar enganado, mas eu creio que seja possivel sim com a versão 1.8.0.1, apenas que dará mais trabalho.

 

Emfim.... continuo aguardando alguem.

 

 

 

De qq forma valeu mesmo ai a atenção Patrique

 

 

 

Valeu !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

velho eu não tinha compreendido sua dúvida, ao dizer não ser possível estava me referindo ao citado por mim no post anterior, não contesto que seja possível da maneira que deseja e compreendi neste momento, porém desconheço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza Patrique,

 

Valeu mesmo.

 

 

Vou esperar algum iluminado ai me ajudar.

 

Ja perdi tempo D+ nisso, e preciso continuar caminhando, mas ta fod......

 

 

 

Abraço kara, qq nova informação que aparecer posta ai

 

 

 

Falowwwwwwwwwwwwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae pessoal,

 

Sei que já ta enchendo o saco, mas é que eu realmente estou precisando disso.

 

 

Será que alguem ai poderia me ajudar, PRECISO (a partir de um PNG ou GIF transparente ) GERAR THUMBNAILS mantendo a transparencia no thumbnail gerado.

 

 

To aguardando alguem ai !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.