Autor Zpráva
kvoky
Profil *
mám script, upravuje to fotky ve složce, ale při větším počtu obrázku píše že memory exhausted (nebo tak nějak). Myslim ze sem udelal imagedestroy(); u všeho tak čim to???
Díky za odpovědi

$slozka=opendir('./foto/'.$_GET[id]);

$counter=$fotek;
$counter2=0;
while ($file = readdir($slozka)) {
$str=substr($file, -3);
if ($file != "." && $file != ".." && ($str=="jpg" || $str=="JPG" || $str=="gif" || $str=="GIF")) {
$counter++;
$counter2++;
$obr="./foto/".$_GET[id]."/".$file;
// Create the image

list($sirka, $vyska, $typ, $attr) = getimagesize($obr);
switch ($typ){
case "1":
$prip=".gif";
break;
case "2":
$prip=".jpg";
break;
}

switch ($typ){
case "1":
$im = imagecreatefromgif($obr);
break;
case "2":
$im = imagecreatefromjpeg($obr);
break;
}

include ("popisek.php");

if ($_GET[popis]=="on")
imagettftext($im, 15, 0, $sirkattf, $vyskattf, $color, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
$novyobr="./foto/".$_GET[id]."/".$counter.$prip;

switch ($typ){
case "1":
imagegif($im, $novyobr);
break;
case "2":
imagejpeg($im, $novyobr);
break;
}

imagedestroy($im);

//miniatura
$miniatura="./foto/".$_GET[id]."/m_".$counter.$prip;
$pomer= ($vyska/$sirka)*150;
$sirkam= 150;
$vyskam= $pomer;
switch ($typ){
case "1":
$velkyobr= imagecreatefromgif($obr);
break;
case "2":
$velkyobr= imagecreatefromjpeg($obr);
break;
}

$mini=imagecreatetruecolor($sirkam, $vyskam);
imagecopyresampled( $mini, $velkyobr, 0, 0, 0, 0, $sirkam, $vyskam, $sirka, $vyska);

switch ($typ){
case "1":
imagegif($mini, $miniatura);
break;
case "2":
imagejpeg($mini, $miniatura);
break;
}

imagedestroy ($velkyobr);
imagedestroy ($mini);
imagedestroy ($miniatura);
imagedestroy ($novyobr);
imagedestroy ($obr);
unlink ($obr);

}else{
if ($file != "." && $file != ".." && $str!="txt"){
echo $file." měl nepovolenou příponu a byl smazán <br>";
unlink ("foto/".$_GET[id]."/".$file);
}
}


}
if ($counter2==0)
echo "Do složky si nenahrál žádnou fotku, pokud chceš nahraj do složky: foto/".$_GET[id]." fotky znovu a <a href='?goto=5&id=".$_GET[id]."&co=zmen'>opakuj proces</a>.";
else
echo "
Hotovo!<br>
Změněno obrázků:".$counter2;
closedir($slozka);
unlink ("foto/fotek.txt");
$soubor = fopen("foto/fotek.txt", "a+");
fwrite($soubor, $counter);
fclose($soubor);
break;
}
}
?>
DJ Miky
Profil
Máš zřejmě u PHP nastaven menší limit paměti, do které se ten obrázek nevejde. Buďto ho nastav vyšší (pokud jsi na lokálu) nebo pracuj s menšími obrázky. A nebo přejdi jinam.
kvoky
Profil *
právě že ne...psalo to něco o 16 MB... Taky sem si to myslel ale tim to asi nebude.
kvoky
Profil *
ja fakt nevim :-(
MzM
Profil
imagedestroy ($obr);

unlink ($obr);

tohle máš zasebou. Tipnul bych, že jedno z toho bude špatně. imagedestroy() ? V $obr je cesta k obrázku. Ne?
MzM
Profil
imagedestroy() na cesty k obrázkům je konina. Ještě něco mě napadlo. Imagedestroy() vrátí true/false, jestli se povedlo. Zkus se podívat, co to vrací. Jinak se mi to zdá vpořádku. Pak zkus ještě v php.ini zapnout veškeré warningy a poznámky, většinou v takových případech něco hlásí...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0