Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal boa madrugada, eu estou lendo o livro PHP e MySQL Desenvolvimento web e no capítulo 21 será feito a manipulação de imagens ou algo do tipo, e preciso configurar o libpng para funcionar pois uso ubuntu 12.04 e no livro diz que não vem pronto, uso também o php 5.2, alguém que já fez isso poderia ajudar?
Eai felipe blz? Então velho olha oque eu encontrei aqui no phpinfo, GD Support enabled e também está constando o libpng, mt obrigado quando eu for precisar de algum recurso extra verificarei aqui antes de ir atraz, obrigado.
Mas no livro está dizendo que eu preciso configura isso no php.ini --with-png-dir=/path mas que caminho que coloco ali?
Mesmo estando tudo certo la no php.info não estou conseguindo rodar o código:
<html> <head> <title></title> </head> <body> <?php //configura a imagem $height = 200; $width = 200; $im = ImageCreate($width, $height); $white = ImageColorAllocate($im, 255, 255, 255); $black = ImageColorAllocate($im, 0, 0, 64); //desenha na imagem ImageFill($im, 0, 0, $blue); ImageLine($im, 0, 0, $width, $height, $white); ImageString($im, 4, 50, 150, "Sales", $white); //enviando para a página Header("Content-type: image/png"); ImagePng($im); ImageDestroy($im); ?> </body></html>
Fica dizendo que a imagem contem erros e não pode ser exibida.Um dos problemas mais comuns ao se trabalhar com GD é querer renderizar, isto é, enviar ao navegador antes mesmo de testar o código.
Se seus alertas de erro estiverem ativados e altos o suficientes para mostrar todos os erros de um código, comentando as linhas do header() e opcionalmente do imagepng() mostrará que você usa a variável $blue mas a mesma não está definida.
Se você trocar $blue por $black não produzirá mais nenhum erro e, consequentemente, ao remover os comentários ora adicionados a imagem será enviada corretamente.
E só pra constar, ~essa definição de $black não produz preto nem aqui e nem na China. :lol:
Sim velho eu copiei o código fielmente do livro, está dessa maneira e não funcionou:
<?php
$height = 200;
$width = 200;
$im = ImageCreate($width, $height);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 0, 0, 64);
ImageFill($im, 0, 0, $black);
ImageLine($im, 0, 0, $width, $height, $white);
ImageString($im, 4, 50, 150, "Sales", $white);
Header("Content-type: image/png");
ImagePng($im);
ImageDestroy($im);
?>Aqui funcionou normalmente, talvez pelo fato de minha instalação cumprir o outro requisito da libpng que é ter a biblioteca zlib instalada e ativada.
Mas velho olha aqui:
Registered PHP Streams https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Achei isso no php.info(); Tem zip ali olha, hahaha não é esse?
Pra ter certeza eu teria de desconfigurar meu ambiente e rodar. Mas procure por uma categoria própria, intitulada zlib, assim como a GD.
Ambas devem estar enabled.
Algumas extensões do PHP registram Stream Wrapper, a zlib faz isso para que você possa abrir, por exemplo, URI's do tipo zlib:// (as quais eu nunca vi) então é um forte indício de que estja ativada.
Experimente rodar esse script com o código abaixo no início, logo abaixo do **<?php**:
ini_set( 'display_errors', TRUE );
error_reporting( E_ALL | E_STRICT ) // PHP > 5 && < 5.4
error_reporting( E_ALL | E_STRICT ) // PHP 5.4+Veja se aparece alguma mensagem.
Mesma mensagem bruno a página contem erros e não pode ser exibida, olhei também la no info.php se tem alguma outra coisa com zlib sozinha, não tem não.
To achando que vou deixar esse capítulo pra traz vou iniciar logo o de sessões, quando terminar o livro volto a isso já faz dois dias que to tentando fazer funcionar sem sucesso.
Lembra do que eu falei no post #5 sobr4e o header()? Remove ele pra que você possa ver o erro. :thumbsup:
Hmm, coloquei o código da seguinte maneira:
<?php
$height = 200;
$width = 200;
$im = ImageCreate($width, $height);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 0, 0, 64);
ImageFill($im, 0, 0, $black);
ImageLine($im, 0, 0, $width, $height, $white);
ImageString($im, 4, 50, 150, "Sales", $white);
//Header("Content-type: image/png");
ImagePng($im);
ImageDestroy($im);
?>
E recebi essa coisinha aqui ó:
‰PNG IHDRÈÈ—–<ÝPLTEÿÿÿ@#’îõIDATX…uÓKrå @Q/µWÐIUßÀKÓR”èueÀ€ñ6ºLÏ]UiY¼EPÅPJDI(¥¬(‚¢(´ Z -…‚–BAK¡ MEQ hÚ‚6 M hÚEPÅÚÅÚÅÚÅÚÅÚÅ:DPÅ :Ä :Ä :Ä :Ä :Ä :EPÅ:Å:Å:Å:Å:Ū"(ŠâUq‚ª8AUœ *NP'¨‰ (ÊÔdj25™ƒšÌAMæ KEQ¦ K¦ K¦ K¦ K¦ K¦ .‚¢(Ï .Ï .Ï .Ï .Ï .Ï AEQ% D”„’QA£Š¢J@‰( %£Üƒn"(Šb(%¢$”Œrº‹ (Š¡”ˆ’P2ÊôAQC (%¡d”!è)‚¢(†P"JBÉ(=hAQC (%¡d”+hAQC (%¡d”äˆ (Š¡”ˆ’P2J ªò.ß]d[‡ÛU»É;¾ßMÂ(ßö²µJåçg“{P›úßëëóÔþùxY?u”¿/³Kd,ýÿ§ÏvyÛ9ƒ\ (%¡d”#ÈAQC (%¡d”=DPÅPJDI(e"E1”€QJF)+Š (Š¡”ˆ’Pò/})R0.®IEND®B`‚
Mas não colocou o código descrito no post #11.
Se porventura o reporte de erros estiver desligados ou com nível muito baixo para mostrar alguma mensagem vai só continuar mostrando aquilo que está vendo, isto é, a saída de imagepng().
Eu coloquei a parte dos erros e continuou com a msg saida.
Não me restam muitas informações pra te ajudar. Experimenta dar uma olhada nos logs dos Apache e veja se mostra alguma coisa que possa valer como ajuda.
Olá,
Primeiro cheque se o seu ambiente tem ou não a biblioteca GD ou GD2. Para fazer isso, crie um arquivo com o nome qualquer com o seguinte conteúdo:
Logo após abra o arquivo pelo navegador, por exemplo http://localhost/info.php.Se tudo der certo você verá uma listagem com os módulos instalados em seu PHP. No seu caso, procure por "gd" ou "gd2". Se estiverem instaladas provavelmente você não precisará se preocupar.