Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
estou usando um script para redimensionar a imagem, se eu defino para ele salvar numa pasta no mesmo diretório do arquivo que faz redimensionamento funciona certo, mas se defino a pasta que preciso que ele salve a imagem o PHP dá esta mensagem:
Warning: imagejpeg() [<a href='function.imagejpeg'>function.imagejpeg</a>]: Unable to open '../../img/titulo-da-video-aula.jpg' for writing: No such file or directory in D:\wamp\www\blog\administracao_site\funcoes.php on line 12
os diretorios estão assim:
blog
--admin
----img <- nesta pasta ele salva
----upload.php
--img <- nesta pasta não salva e dá a mensagem acima
Verdade, com constantes mágicas ajuda nesses casos de diretório, como:
-
__FILE__: Mostra o caminho completo de um arquivo ou diretório, ou
-
__DIR__: O diretório do arquivo. Se usado dentro de um include, o diretório do arquivo incluído é retornado. Isto é equivalente a dirname(__FILE__). Este nome do diretório não possui barra no final, a não ser que seja o diretório raiz.
Mais informações: :seta: Documentação oficial
>
Posta o código
esta é a função que redimensiona e move a imagem.
quando chamo a função a variável $pasta eu defino assim: http://localhost/blog/img/
function upload($temp, $nome, $larguraP, $pasta) {
$extensao = strtolower(end(explode('.', $nome)));
if ($extensao == 'jpg' || $extensao == 'jpeg') :
$img = imagecreatefromjpeg($temp);
$x = imagesx($img);
$y = imagesy($img);
$largura = ($x > $larguraP) ? $larguraP : $x;
$altura = ($largura * $y) / $x;
if ($altura > $larguraP) :
$altura = $larguraP;
$largura = ($altura * $y) / $x;
endif;
$novaImg = imagecreatetruecolor($largura, $altura);
imagecopyresampled($novaImg, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
imagejpeg($novaImg, $pasta . $nome);
imagedestroy($novaImg);
imagedestroy($img);
return $nome;
elseif ($extensao == 'png') :
$img = imagecreatefrompng($temp);
$x = imagesx($img);
$y = imagesy($img);
$largura = ($x > $larguraP) ? $larguraP : $x;
$altura = ($largura * $y) / $x;
if ($altura > $larguraP) :
$altura = $larguraP;
$largura = ($altura * $y) / $x;
endif;
$novaImg = imagecreatetruecolor($largura, $altura);
imagealphablending($novaImg, TRUE);
$transparente = imagecolorallocatealpha($novaImg, 0, 0, 0, 127);
imagefill($novaImg, 0, 0, $transparente);
imagecopyresampled($novaImg, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
imagesavealpha($novaImg, TRUE);
imagepng($novaImg, $pasta . $nome);
imagedestroy($novaImg);
imagedestroy($img);
return $nome;
else :
$img = imagecreatefromgif($temp);
$x = imagesx($img);
$y = imagesy($img);
$largura = ($x > $larguraP) ? $larguraP : $x;
$altura = ($largura * $y) / $x;
if ($altura > $larguraP) :
$altura = $larguraP;
$largura = ($altura * $y) / $x;
endif;
$novaImg = imagecreatetruecolor($largura, $altura);
imagecopyresampled($novaImg, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
imagegif($novaImg, $pasta . $nome);
imagedestroy($novaImg);
imagedestroy($img);
return $nome;
endif;
}
>
Verdade, com constantes mágicas ajuda nesses casos de diretório, como:
-
__FILE__: Mostra o caminho completo de um arquivo ou diretório, ou
-
__DIR__: O diretório do arquivo. Se usado dentro de um include, o diretório do arquivo incluído é retornado. Isto é equivalente a dirname(__FILE__). Este nome do diretório não possui barra no final, a não ser que seja o diretório raiz.
Mais informações: :seta: Documentação oficial
deu certo, eu fiz assim:
$urlPasta = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'img'.DIRECTORY_SEPARATOR;
obrigado pela ajuda, salvou meu dia
Posta o código