Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

intao

[Resolvido] Como permitir todas extensões de imagens ?

Recommended Posts

Olá galera, estou encontrando dificuldade com um script que cria e mostra em thumbs todas imagens de um diretório,

 

o script é aparentimente simples, mais é muito bom, alguem pode me mostrar como faço para este aceitar todas extensões de imagem?

 

Porque infelismente ele só aceita e cria "jpg" , e preciso que este aceite "jpg", "jpeg" , "png" e "gif",

 

alguem pode me mostrar como faço isso ?

 

Eis o script:

 

<?php
$columns     = 5;
$thmb_width  = 120;
$thmb_height = 80;

function resizeImage($originalImage,$toWidth,$toHeight){

   // Get the original geometry and calculate scales
   list($width, $height) = getimagesize($originalImage);
   $xscale=$width/$toWidth;
   $yscale=$height/$toHeight;

   // Recalculate new size with default ratio
   if ($yscale>$xscale){
       $new_width = round($width * (1/$yscale));
       $new_height = round($height * (1/$yscale));
   }
   else {
       $new_width = round($width * (1/$xscale));
       $new_height = round($height * (1/$xscale));
   }
   // Resize the original image
   $imageResized = imagecreatetruecolor($new_width, $new_height);
   $imageTmp     = imagecreatefromjpeg ($originalImage);
   imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

   return $imageResized;
} 

function generateThumbnails(){
global $thmb_width,$thmb_height;

// Open the actual directory
if ($handle = opendir(".")) {
	// Read all file from the actual directory
	while ($file = readdir($handle))  {
		// Check whether tha actual item is a valid file
		if (is_file($file)){
			// Check whether the actual image is a thumbnail
      		if (strpos($file,'_th.jpg')){
      			$isThumb = true;
      		} else {
	      		$isThumb = false;
	      	}

      		if (!$isThumb) {
	      		// Process the file string
      			$dirName  = substr($file,0,strpos($file,basename($file)));
      			if (strlen($dirName) < 1) $dirName = '.';
      			$fileName = basename($file);
      			$fileMain = substr($fileName,0,strrpos($fileName,'.'));
      			$extName  = substr($fileName,strrpos($fileName,'.'),
      								strlen($fileName)-strrpos($fileName,'.'));

      			// Check if the actual file is a jpeg image
      			if (($extName == '.jpg') || ($extName == '.jpeg')){
		    		$thmbFile = $dirName.'/'.$fileMain.'_th.jpg';
		    		// If a thumbnail dosn't exists tahn create a new one
		    		if (!file_exists($thmbFile)){
			    		imagejpeg(resizeImage($file,$thmb_width,$thmb_height),$thmbFile,80);
			    	}
				}
      		} 
   		}
  		}
}

}

function getNormalImage($file){
$base = substr($file,0,strrpos($file,'_th.jpg'));
if (file_exists($base.'.jpg')) return $base.'.jpg';
elseif (file_exists($base.'.jpeg')) return $base.'.jpeg';
else return "";
}

function displayPhotos(){
global $columns;

generateThumbnails();
$act = 0;
// Open the actual directory
if ($handle = opendir(".")) {
	// Read all file from the actual directory
	while ($file = readdir($handle))  {
		// Check whether tha actual item is a valid file
		if (is_file($file)){
			// Check whether the actual image is a thumbnail
      		if (strpos($file,'_th.jpg')){
				++$act;
				if ($act > $columns) {
					echo '</tr><tr><td class="photo"><a href="'.getNormalImage($file).'"><img src="'.$file.'" alt="'.$file.'"/></a></td>';	
					$act = 1;
				} else {
					echo '<td class="photo"><a href="'.getNormalImage($file).'"><img src="'.$file.'" alt="'.$file.'"/></a></td>';	
				}

      		}
      	}
	}
}	
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>galeria</title>

</head>
<body>
 <div id="main">

     <table align="center"><tr>     
   		<?php displayPhotos(); ?>
     </table>		

  </div>
</body>   

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em uma parte do código tem esse IF:

if (($extName == '.jpg') || ($extName == '.jpeg')){

 

Aí o código só verifica se a imagem possui extensão JPEG ou JPG.

Você pode ou tirar este IF, passando a aceitar qualquer coisa, ou você aumenta ele, perguntando se é GIF, PNG e outras. (Costuma-se a fazer um array para isso.)

 

$arr = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
$status = 0;

foreach($arr as $key)
  if($extName != $key)
     $status = 1;

if($status == 1)
  echo 'Extensão Inválida. Somente imagens com extensões: JPG, JPEG, GIF, PNG e BMP';
else
{
  // Continue o processo!
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também!

Não lembrava do in_array().

Sabia que tinha uma função que resumia percorrer um array com foreach, mas não lembrava qual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, mas só adicionando as extensões não vai funcionar, porque ele está usando as funções para arquivos .jpg.

 

Eu sugiro que você utilize esta classe. É muito boa e simples de utilizar.

 

<?php

require_once '/path/to/ThumbLib.inc.php';

$thumb = PhpThumbFactory::create('test.jpg');
$thumb->resize(100, 100);
$thumb->show();

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.