Ir para conteúdo
Fórum Script Brasil
  • 0

Problema No Php Ou Na Função De Imagem?


Pilantra

Pergunta

Pessoal, eu estou desde ontem testando várias funções para redimensionar fotos, e a mais perfeita que eu achei foi no site do php mesmo, e vejam só o erro que ele retorna:

Warning: opendir(../produtos/objetos_decorativos_50.jpg):failed to open dir: Invalid argument in D:\gustavo\htdocs\cueca\_setadm\add_produtos.php on line 66

Esse foi o erro, e agora eu vou postar a função e como eu usei ela:

function resize($cur_dir, $cur_file, $newwidth, $output_dir)

{

  $dir_name = $cur_dir;

  $olddir = getcwd();

  $dir = opendir($dir_name);

  $filename = $cur_file;

  $format='';

  if(preg_match("/.jpg/i", "$filename"))

  {

      $format = 'image/jpeg';

  }

  if (preg_match("/.gif/i", "$filename"))

  {

      $format = 'image/gif';

  }

  if(preg_match("/.png/i", "$filename"))

  {

      $format = 'image/png';

  }

  if($format!='')

  {

      list($width, $height) = getimagesize($filename);

      $newheight=$height*$newwidth/$width;

      switch($format)

      {

          case 'image/jpeg':

          $source = imagecreatefromjpeg($filename);

          break;

          case 'image/gif';

          $source = imagecreatefromgif($filename);

          break;

          case 'image/png':

          $source = imagecreatefrompng($filename);

          break;

      }

      $thumb = imagecreatetruecolor($newwidth,$newheight);

      imagealphablending($thumb, false);

      $source = @imagecreatefromjpeg("$filename");

      imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

      $filename="$output_dir/$filename";

      @imagejpeg($thumb, $filename);

  }

}

  resize("$caminho","Thum_","250","../produtos/thumb/");

Sera que alguém pode me explicar o que acontece?! Se é problema do PHP aqui na minha máquina ou se é a função que não presta!! Porque se for a função, milhares de funções espalhadas pelo mundo estão com problema!!! biggrin.gif

Obrigado

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

cara.. ele ta dando erro porque você ta tentando abrir uma imagem com um comando de abrir diretório tongue.gif

confira os caminhos

Link para o comentário
Compartilhar em outros sites

  • 0

Putz cara você tinha razão, acabei de testar aqui e colequei certinho e não gerou erro, porém, não gerou a imagem!!!!

Eu to me matando aqui pra fazer isso desde ontem, quando a função não retorna erro, ela não gera a imagem pequena!!!! sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Eu uso esse sistema pra criar os tumbs pra visualização da uma olhada ae ve o que você pode aproveita.

Arquivo make_tumbs.php

<?PHP

define(PATH_IMG, '/tumbs/');
define(MAX_WIDTH, 160);
define(MAX_HEIGHT, 120);

# Pega onde está a imagem
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = $file_img;

# Carrega a imagem
$img = null;

$extensao = strtolower(end(explode('.', $image_path)));

if ($extensao == 'jpg' || $extensao == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);

} else if ($extensao == 'png') {
    $img = @imagecreatefrompng($image_path);

// Se a versão do GD incluir suporte a GIF, mostra...
} else if ($extensao == 'gif') {
    $img = @imagecreatefromgif($image_path);
}

// Se a imagem foi carregada com sucesso, testa o tamanho da mesma
if ($img) {

    // Pega o tamanho da imagem e proporção de resize
    $width  = imagesx($img);
    $height = imagesy($img);
    $scale  = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);

    // Se a imagem é maior que o permitido, encolhe ela!
    if ($scale < 1) {
        $new_width = floor($scale*$width);
        $new_height = floor($scale*$height);

        // Cria uma imagem temporária
        $tmp_img = imagecreatetruecolor($new_width, $new_height);

        // Copia e resize a imagem velha na nova
        imagecopyresampled($tmp_img, $img, 0, 0, 0, 0,
                         $new_width, $new_height, $width, $height);
        imagedestroy($img);
        $img = $tmp_img;
    }
}

// Cria uma imagem de erro se necessário
if (!$img) {
    $img = imagecreate(MAX_WIDTH, MAX_HEIGHT);

    imagecolorallocate($img,204,204,204);
    
    $c  = imagecolorallocate($img,153,153,153);
    $c1 = imagecolorallocate($img,0,0,0);
    
    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c);
    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c);
    imagestring($img, 2, 12, 55, 'erro ao carregar imagem',$c1 );
}

// Mostra a imagem
header('Content-type: image/jpeg');
imagejpeg($img);
?> 

index.php
<html>

<title>.: Lista Imagens :.</title>

<meta name="author" content="mauricio wolff :aka: mauwolff" />

<style type="text/css" media="all">
<!--

body, p { font-family: arial, sans-serif; font-size: 12px; }
image   { border: 0; text-align: center;}

-->
</style>
</head>

<body>

<?php

// Abre o diretório atual para leitura de imagens...
if ($handle = opendir('.')) {
  while (false !== ($file = readdir($handle))) {

    // Só carrega as imagens que tiverem extensões esperadas
    if (strtolower(substr($file,-4,4)) == '.jpg' ||
        strtolower(substr($file,-4,4)) == '.gif' ||
        strtolower(substr($file,-4,4)) == '.png' ||
        strtolower(substr($file,-5,5)) == '.jpeg') {
      
      $alt = 'clique para ver a imagem no tamanho original...';
      echo '<a href="'.$file.'" target="_blank"><img src="make_tumbs.php?file_img='.$file.'" alt="'.$file.'" /></a>'."\n";
    }
  }
closedir($handle);
}

?>

</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

voltando ao script do Pilantra, só tem q ficar ligado nos diretorios e nomes do arquivo... assim aparente pra mim o script ta legal...

se ta aparecendo a imagem com erro, dizendo q a imagem não foi encontrada.. clica com o botão direito encima da imagem, propriedades, e vê qual o caminho que ele ta tentando buscar a imagem... daih fica fácil descobrir aonde você ta errando...

lembre-se que ele ta pedindo o caminho da imagem, depois o nome da imagem, depois o novo tamanho, e depois o caminho onde ela será salva...

flwww

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...