[PHP]Tworzenie miniaturek

Witam!

Mam folder gallery, a w nim foldery 1,2,3(…) itp, a w tych folderach są zdjęcia…

Chciałbym teraz, aby skrypt w każdym folderze(1,2,3) utworzył miniaturki ze zdjęć (dobrze by było jakby jeszcze w dodatkowym folderze np. thumbs).

Oto skrypt do tworzenia miniaturki:

Dlaczego najpierw wywołujesz funkcję, a dopiero potem ją deklarujesz? W dodatku w pętli?

Faktycznie sory mój błąd…

Ale zrobiłem teraz tak:

Na tę chwilę mogę powiedzieć Ci, dlaczego nic nie działało.

<?php


    $d = dir("1");


    function cropImage($nw, $nh, $source, $stype, $dest) 

	{

        $size = getimagesize($source);

        $w = $size[0];

        $h = $size[1];

        switch($stype) {

            case 'gif':

            $simg = imagecreatefromgif($source);

            break;

            case 'jpg':

            $simg = imagecreatefromjpeg($source);

            break;

            case 'png':

            $simg = imagecreatefrompng($source);

            break;

        }

	}

    while (false !== ($entry = $d->read())) {

    cropImage(100, 90, '$d/$entry', 'jpg', '$d/thumbs/$entry');

        $dimg = imagecreatetruecolor($nw, $nh);

        $wm = $w/$nw;

        $hm = $h/$nh;

        $h_height = $nh/2;

        $w_height = $nw/2;

        if($w> $h) {

            $adjusted_width = $w / $hm;

            $half_width = $adjusted_width / 2;

            $int_width = $half_width - $w_height;

            imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

        } elseif(($w <$h) || ($w == $h)) {

            $adjusted_height = $h / $wm;

            $half_height = $adjusted_height / 2;

            $int_height = $half_height - $h_height;

            imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

        } else {

            imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);

        }

        imagejpeg($dimg,$dest,100);

    }


    $d->close();

    ?>

Nie w tym co trzeba miejscu zamknąłeś deklarację funkcji;)

Pokazały mi się te błędy tyle razy ile obrazków w folderze

<?php


    $d = dir("images");


    function cropImage($nw, $nh, $source, $stype, $dest) 

	{

        $size = getimagesize($source);

        $w = $size[0];

        $h = $size[1];

        switch($stype) {

            case 'gif':

            $simg = imagecreatefromgif($source);

            break;

            case 'jpg':

            $simg = imagecreatefromjpeg($source);

            break;

            case 'png':

            $simg = imagecreatefrompng($source);

            break;

        }

		$dimg = imagecreatetruecolor($nw, $nh);

        $wm = $w/$nw;

        $hm = $h/$nh;

        $h_height = $nh/2;

        $w_height = $nw/2;

        if($w> $h) {

            $adjusted_width = $w / $hm;

            $half_width = $adjusted_width / 2;

            $int_width = $half_width - $w_height;

            imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

        } elseif(($w <$h) || ($w == $h)) {

            $wm=1;

			$adjusted_height = $h / $wm;

            $half_height = $adjusted_height / 2;

            $int_height = $half_height - $h_height;

            imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

        } else {

            imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);

        }

        imagejpeg($dimg,$dest,100);

	}

    while (false !== ($entry = $d->read())) {

	if($entry!=='.' && $entry!=='..')

	{

	mkdir("images/".$entry."/thumbs");

	$e=dir("images/".$entry);

	while (false !== ($entry2 = $e->read())) {

	if($entry2!=='.' && $entry2!=='..' && !is_dir("images/".$entry."/".$entry2))

	{



    cropImage(100, 90, "images/".$entry."/".$entry2, 'jpg', "images/".$entry."/thumbs/".$entry2);


    }}}}


    $d->close();

    ?>

Foldery ze zdjęciami trzymaj w folderze images.

PS. Zastanów się, co oznaczają te błędy i znajdź ich przyczynę w kodzie.

Powyższy skrypt działa tak jak chciałeś.

Dziękuje Bardzo :wink: