Avatar billede druen Nybegynder
09. juli 2007 - 16:57 Der er 4 kommentarer

Resize flere billeder på én gang

Hej

Jeg har lavet følgende script, som skulle resize alle billeder i en mappe, men det sker bare ikke. Det er kun det første billede som bliver lavet i en ny thumb version.

<?
header('Content-type: image/jpeg');

if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $ext = explode(".", $file);
            $ext = $ext[1];
            $filename = "$file";
            $bredde = "60";

    if($ext == "jpg"){

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

        $new_width = $bredde;
        $new_height = $height / $width * $new_width;

        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

        imagejpeg($image_p, "thumb$file",100);

    }

        }
    }

closedir($handle);
}
?>
Avatar billede jakobdo Ekspert
09. juli 2007 - 21:28 #1
Måske du kan få en smule inspiration i denne tråd: http://www.eksperten.dk/spm/784870
Avatar billede nemlig Professor
09. juli 2007 - 22:56 #2
Avatar billede jakobdo Ekspert
10. juli 2007 - 08:11 #3
Eller noget lidt kortere på denne måde:

<?php
ini_set("memory_limit","64M");

echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Strict //EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n";
echo "<html>\n";
echo "<head>\n";
echo "<title>Resize</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<div id=\"content\">\n";
echo "<h1>Resize</h1>\n";

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}

$dir = getcwd();

$allowExt = array("jpg","JPG");

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                if(file_exists("thumb_" . $file) || preg_match('/^thumb_/', $file))
                {
                    ;
                }
                else
                {
                    resize($file, getcwd() . "/thumb_" . $file, 300, 300);
                }
               
                if(!preg_match('/^thumb_/', $file))
                {
                    $thumb = "thumb_" . $file;
                    $fileArray[$thumb] = $file;
                }
            }
        }
        closedir($dh);
    }
}

if(count($fileArray)>0)
{
    echo "<table id=\"centerTable\">\n";
    foreach($fileArray as $thumb => $file)
    {
        echo "<tr><td><a target=\"_blank\" href=\"" . $file . "\"><img src=\"".$thumb."\"></a></td></tr>\n";
    }
    echo "</table>\n";
}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

echo "</div>\n";
echo "</body>\n";
echo "</html>\n";

?>

PS: Den tager kun jpeg billeder.
Avatar billede nemlig Professor
08. september 2007 - 09:08 #4
Druen: Er det ikke tid til at afslutte? :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester