Descobrir se imagem existe

532 views
Skip to first unread message

Lauro Becker

unread,
Dec 6, 2006, 6:56:40 AM12/6/06
to ph...@googlegroups.com
Bom dia, pessoal!

Estou com um pequeno problema.
Preciso descobrir se uma imagem existe. Estou acostumado a usar a função is_file() para tal necessidade, porém ela só funciona se a imagem estiver no meu próprio servidor.
Tenho que descobrir se a imagem que está em outro servidor existe. Acesso a mesma pela URL.

Alguma sugestão?

Obrigado desde já.

Abraço a todos.

--
Lauro L. V. Becker
---------------------------
Celular: (54) 8126 7948
MSN: lau...@hotmail.com

Cassiano B.O Velloso

unread,
Dec 6, 2006, 10:21:31 AM12/6/06
to ph...@googlegroups.com
não sei se é a melhor opção, porem voce pode usar fopen para isso, na
[1]doc fala que funciona com arquivos e urls
1 - http://php.net/fopen

faça algo como que deve resolver seu problema
if($fp=fopen($img, 'r'))
{
........
}
fclose($fp);

> MSN: lau...@hotmail.com <mailto:lau...@hotmail.com>
> >

tayl...@taylorrf.com

unread,
Dec 6, 2006, 10:39:39 AM12/6/06
to ph...@googlegroups.com
Oi Lauro!

Já tentou usar a função file_exists?

<?php
$filename = '/caminho/para/qualquer.txt';

if (file_exists($filename)) {
print "O arquivo $filename existe";
} else {
print "O arquivo $filename não existe";
}
?>

Att,
Tailor.

tayl...@taylorrf.com

unread,
Dec 6, 2006, 10:42:47 AM12/6/06
to ph...@googlegroups.com
Outra possivel alternativa..

<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
echo "<p>Incapaz de abrir arquivo remoto.\n";
exit;
}
fclose($file);
?>


Att,
Tailor.

Renato Dehnhardt

unread,
Dec 6, 2006, 12:40:57 PM12/6/06
to ph...@googlegroups.com
o cara ja tentou usar file_exists

Cassiano B.O Velloso

unread,
Dec 6, 2006, 1:29:10 PM12/6/06
to ph...@googlegroups.com
essa ideia que eu passei do fopen, "Funcionou", porem por motivos de
segurança ela vem configurada default como off para abertura de urls ....
segue o teste que realizei e seus resultados (ps: use $fp=@fopen...
caso queira ocultar o warning que possivelmente aparecera)

cbov@monza /tmp $ cat teste.php
<?
function teste($img)
{
echo $img." - ";
if($fp=fopen($img, 'r'))
{
echo "existe\n";
return true;
}
else
{
echo "nao existe\n";
return false;
}
fclose($fp);
}

teste("http://www.google.com/images/logo_sm.gif");
teste("http://www.google.com/images/NAOEXISTElogo_sm.gif");
teste("teste.php");
?>

cbov@monza /tmp $ php teste.php
http://www.google.com/images/logo_sm.gif -
Warning: fopen(): URL file-access is disabled in the server
configuration in /tmp/teste.php on line 5

Warning: fopen(http://www.google.com/images/logo_sm.gif): failed to open
stream: no suitable wrapper could be found in /tmp/teste.php on line 5
nao existe
http://www.google.com/images/NAOEXISTElogo_sm.gif -
Warning: fopen(): URL file-access is disabled in the server
configuration in /tmp/teste.php on line 5

Warning: fopen(http://www.google.com/images/NAOEXISTElogo_sm.gif):
failed to open stream: no suitable wrapper could be found in
/tmp/teste.php on line 5
nao existe
teste.php - existe

======================
mudei a configuração allow_url_fopen de Off para On no php.ini
======================

cbov@monza /tmp $ php teste.php
http://www.google.com/images/logo_sm.gif - existe
http://www.google.com/images/NAOEXISTElogo_sm.gif -
Warning: fopen(http://www.google.com/images/NAOEXISTElogo_sm.gif):
failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
in /tmp/teste.php on line 5
nao existe
teste.php - existe

Lauro Becker

unread,
Dec 6, 2006, 10:45:40 AM12/6/06
to ph...@googlegroups.com
Hm... também pensei nessa solução, porém quando o arquivo não existe, estoura um Warning na tela.
Preciso de algo que não mostre um erro. Apenas me retorne um valor lógico.
Não quero desabilitar a exibição de erros.

Mesmo assim, muito obrigado Cassiano!

Abraço.

Em 06/12/06, Cassiano B.O Velloso <cb...@cbov.org> escreveu:

Lauro Becker

unread,
Dec 6, 2006, 10:48:08 AM12/6/06
to ph...@googlegroups.com
Perfeito!

Era exatamente o que eu precisava.
Obrigado Tailor.

Forte abraço!

Lauro Becker

unread,
Dec 6, 2006, 12:44:50 PM12/6/06
to ph...@googlegroups.com
Sim, foi dessa forma que solucionei o problema.

Obrigado.

Em 06/12/06, Renato Dehnhardt <ren...@fullsystem.com.br > escreveu:

Lauro Becker

unread,
Dec 6, 2006, 1:37:20 PM12/6/06
to ph...@googlegroups.com
Legal, interessante.

Mas ainda prefiro a solução do file_exists(). É mais elegante e simples.

Mesmo assim, muito obrigado!

Em 06/12/06, Cassiano B.O Velloso <cb...@cbov.org> escreveu:

Guilherme Ribeiro

unread,
Dec 7, 2006, 8:09:43 AM12/7/06
to ph...@googlegroups.com
Colocando o famigerado @ na chamada da função poderia ajudar!

Andre

unread,
Dec 7, 2006, 8:52:35 AM12/7/06
to ph...@googlegroups.com
Encontrei esse script. Talvez seja uma solução boa.
O script é para jpg, mas se der uma pequena estudada
e procurar outras funções fácilmente consegue criar
um script mais robusto para qualquer tipo de imagem.

Grato
André P. Santos

<?
$imagem = @imagecreatefromJpeg ($_GET['imagem']);
if (!$imagem) { /* See if it failed */
$imagem = imagecreate(100, 100); /* Create a blank image */
$bgc = imagecolorallocate($imagem, 255, 255, 255);
$tc = imagecolorallocate($imagem, 0, 0, 0);
imagefilledrectangle($imagem, 0, 0, 100, 100, $bgc);
/* Output an errmsg */
imagestring($imagem, 1, 12, 45, "Não encontrada.", $tc);
};
Header("Content-type: image/JPEG");
ImageJpeg($imagem);
ImageDestroy($imagem);
?>

________________________________________________
Message sent using UebiMiau 2.7.9


Reply all
Reply to author
Forward
0 new messages