Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
function teste ($file) {
if (file_exists($file)){
header ("Content-type: image/jpeg");
imagepng($file);
imagedestroy($file);
} else {
die("Imagem não encontrada.");
}
}
teste('diretorio/cupom.jpg');
exit;
Fiz esse script para teste da hospedagem
Bom, o problema é, a função não retorna a imagem. rs
Aliás, retorna como se ela não tivesse sido encontrada, maaaas, pelo file_exists ela é encontrada. rs
Ela apenas não retorna, é como se a imagem tivesse quebrada, tipo assim > /applications/core/interface/imageproxy/imageproxy.php?img=http://www.google.com.br/teste.png&key=37cbf801db380ad1a043716d1eceb786ef123c079c423888e9ecd53784669a15" alt="teste.png" />
Aguardo respostas.
Podemos fazer isso de uma forma elegante e reutilizável, suportando qualquer tipo de imagem:
<?php
class UnknownMimeTypeException extends InvalidArgumentException
{
}
class FileNotFoundException extends InvalidArgumentException
{
}
class ImageFile
{
private $file;
private $knownMimeTypes = array(
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
// Adicione os mime types que desejar aqui, sendo que a chave é
// a extensão do arquivo e o valor é o respectivo mime-type.
);
public function __construct($file)
{
if ( ! file_exists($file)) {
throw new FileNotFoundException(
sprintf('File not found: "%s"', $file)
);
}
$this->file = $file;
}
public function getContents()
{
return file_get_contents($this->file);
}
public function getExtension()
{
return pathinfo($this->file, PATHINFO_EXTENSION);
}
public function getMimeType()
{
$mimeTypes = $this->knownMimeTypes;
$extension = $this->getExtension();
if ( ! isset($mimeTypes[$extension])) {
throw new UnknownMimeTypeException(
sprintf('Unknown mime type for ".%s"', $extension)
);
}
return $mimeTypes[$extension];
}
}
class ImageOutput
{
private $imageFile;
public function __construct(ImageFile $imageFile)
{
$this->imageFile = $imageFile;
}
public function show()
{
$mimeType = $this->imageFile->getMimeType();
$content = $this->imageFile->getContents();
header('Content-Type: ' . $mimeType);
echo $content;
}
}
E para usar:
<?php
try {
$image = new ImageOutput(new ImageFile('filename.jpg'));
$image->show(); echo sprintf('[%s] %s', get_class($e), $e->getMessage());
}
Espero ter ajudado :).
Irei testar seu script, mas aquele de cima fiz apenas para teste. rs
Tenho uma classe Pic que também não retorna a imagem. ^^
Seu script também não funcionou Enrico Pereira. rs
Mesmo assim valeu a tentativa. :)
O que acontece?
A imagem não aparece, fica com o icone assim > /applications/core/interface/imageproxy/imageproxy.php?img=http://www.google.com.br/imagem_inexistente.gif&key=a0ef0c7c524c1f1954e45b81db55c19be9ba2047aa10535c4f025f11c6b49942" alt="imagem_inexistente.gif" />
Duas perguntas:
A imagem realmente é uma imagem válida?
Testou localmente?
É válida sim... rs
Não, não testei localmente.
Bem, tente testar localmente, pode ser (e provavelmente é) um problema de servidor, pois eu não tive nenhum problema ao usar.
Segundo ponto: você alterou o caminho da imagem, certo?
Alterei sim, mas de acordo com seu script, se não encontrasse a imagem ele iria informar o erro, não? rs
Sim, seria algo como:
[FileNotFoundException] File not found: "nomedoarquivo.jpg"
Logo, só consigo pensar em duas hipóteses:
>
Sim, seria algo como:
[FileNotFoundException] File not found: "nomedoarquivo.jpg"
Logo, só consigo pensar em duas hipóteses:
Tirei testar localmente.
Funcionou? estranho, aqui foi tudo certo...
localmente não funcionou também. rs
Pior que fiz um
if(file_exists('public/images/promocoes/cupom.jpg')){
echo "O arquivo existe!";
} else {
echo "Não existe";
}
Só para testar e falou que existe. :\
Deixei a mesma url na sua classe e retorna a imagem quebrada.
Amigo, ta aqui o código que você quer, se é que eu tenha percebido o que você queria!
<?php
$img = 'img/logo.png';
if(file_exists($img)){
echo "O arquivo existe! Aguarde 2 segundos...";
echo "<meta http-equiv='refresh' content='2; url=" . $img . "'>"; echo "Não existe";
}
?>Eu acho que foi isso q pediu, mas se o q pediu foi para aparecer a imagem no mesmo local ou div numa parte da pagina , isso ja requer javascript! Eu não sou muito bom nessa área!
Demo: http://www.radiobaladaalternativa.com.br/testes/imgexiste.php
Não é isso não Bruno Pereira_175171, ai irá aparecer a url da imagem... Não iria servir para mim.
Preciso que o php gere a imagem e fique a url atual. rs
tipo
gerar/cupom/
Isso ai ja requer Javascript....
Também dava com php, mas iria dar muito trabalho, eu irei procurar um código q irei tentar fazer, um para você e dps mais logo posto aqui! ;)
Edgard, tenta com outra imagem, pode ser as permissões da imagem também, ou até mesmo um bug da versão do PHP ou do navegador.
Resumindo:
O problema deve ser no jeito de como é passado o endereço dela, tente colocar na tag <img e veja se aparece...
cristianoolv, a intenção dele não é mostrar como HTML, mas enviar a imagem como uma image/jpeg response, como se fosse o servidor enviando.
cristianoolv, a intenção dele não é mostrar como HTML, mas enviar a imagem como uma image/jpeg response, como se fosse o servidor enviando.
O problema deve ser no jeito de como é passado o endereço dela, tente colocar na tag <img e veja se aparece...
nao seria muito mais simples fazer isso ;)
<?php
function teste ($file) {
if (file_exists($file)){
echo '<img alt="legenda" src="'.$file.'">';
} else {
die("Imagem não encontrada.");
}
}
teste('diretorio/cupom.jpg');
exit;
?>
mesmo assim acho q isso pode ajudar: (talvez o dode nao funcione :|
img.php
<?php
// numeros, sem aspas
$comprimento = 15;
$altura = 5;
// Config
$img = 'img_desejada.png';
// Não é nescessario editar
$imagem = imagecreatefrompng($img);
imagestring($imagem,$comprimento,$altura);
header("Content-type: image/png");
imagepng($imagem);
imagedestroy($imagem);
?>Mas ele não quer mostrar em HTML, entendeu? ele quer mostrar uma imagem, uma imagem, não um HTML com uma imagem.
@Enrico
Irei tentar, postarei o resultado. rs
@Cristianoolv
Se eu usar a <img> ele funciona de boas. ^^
@Bruno
Com javascript por ser serverside iria ter que apontar o endereço da imagem e iria ficar visível, então não iria me servir. rs
>
Amigo no caso tem alguns erros no seu código você esta utilizando um header de imagem JPEG e usando uma para exibir imagem PNG e alem dissso tentando abrir uma imagem JPEG com função usada para imagens PNG.
da uma olhadinha no manual sobre imagejpeg