intao 0 Denunciar post Postado Dezembro 30, 2010 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
Go Back 0 Denunciar post Postado Dezembro 30, 2010 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
André D. Molin 15 Denunciar post Postado Dezembro 30, 2010 in_array(), Go Back. Compartilhar este post Link para o post Compartilhar em outros sites
Go Back 0 Denunciar post Postado Dezembro 30, 2010 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
Matias Rezende 50 Denunciar post Postado Dezembro 30, 2010 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
intao 0 Denunciar post Postado Janeiro 13, 2011 A vlw, obrigado... (resolvido). Compartilhar este post Link para o post Compartilhar em outros sites