Kép átméretezésnél nullával osztás
A probléma ebben a kódban van, amikor lefut kiirja hogy zéróval történő osztás, stb, szerintem nem tudja elérni a képet. Lehet a kódot egyszerűbben is össze lehetett volna hozni, kérlek titeket adjatok tanácsot, mit kellene egyszerübben. De elsőként a problémát kellene megszüntetni.Köszönöm!
■ <?php
function createthumb($name,$filename,$new_w){
$system=explode('.',$name);
$src_img=imagecreatefromjpeg($name);
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
$thumb_w=$new_w;
$thumb_h=ceil($old_y/($old_x/$new_w));
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
if (preg_match("/png/",$system[1])) {
imagepng($dst_img,$filename);
} else {
imagejpeg($dst_img,$filename);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}
if($_GET['act'] == "upload") {
for($x=0;$x<$_POST['fajlok'];$x++) {
if (($_FILES["kepek$x"]["type"] == "image/jpeg") || ($_FILES["kepek$x"]["type"] == "image/pjpeg")) {
mkdir("gallery/{$_POST['mappa']}", 0700);
mkdir("gallery/{$_POST['mappa']}/thumbs", 0700);
move_uploaded_file($_FILES["kepek$x"]["tmp_name"], "gallery/{$_POST['mappa']}/" . $_FILES["kepek$x"]["name"]);
$eredeti = gallery/$_POST["mappa"]/$_FILES["kepek.$x"]["name"];
$thum = gallery/$_POST["mappa"]/thumbs/$_FILES["kepek$x"]["name"];
createthumb('$eredeti','$thum',150);
echo"A fájl másolása kész! {$_FILES["kepek$x"]["name"]}<br />";
} else {
echo"Hiba! A fájl csak kép lehet!";
}
}
}
méretezés
hogyan keressünk bugot
Tom Kyte szokta mondani, hogy ne egy egész modult kódját idézd be, hanem csak a problémás részt. Általában mire leszűkíti az ember, hogy mi releváns, mi nem, már meg is találja a bugot...
Nem illik szapulni a közösséget, ha nem válaszol a kérdésedre. Vagy nagyon specifikusat kérdeztél, amire senki sem tudja a választ, bár ilyenkor lehet, hogy rossz fórumon tetted fel a kérdést, vagy pedig annyira pofátlannak érzi a közösség a kérdést, hogy inkább nem válaszol senki, ne kelljen dolgozniuk a moderátoroknak
A hibaüzeneteket lehet szidni, hogy néha félrevezetők (ebben pont az Oracle viszi a prímet szvsz, bár ez itt OFF), de kiindulásnak nem rosszak... a te esetedben a nullával való osztás azt jelenti, hogy az ember megnézi, hol is oszt - s mivel sorszám is érkezik a hibaüzenettel, pontosan tudni lehet, hol osztasz nullával. Ezt az infot innen kihagytad, legközelebb ezt is rakd be (s ne csak a számot, hanem az idézett kódban, hogy melyik is az a sor)
Nézzük az osztásokat!
Osztasz egyfelől a creathumb fv-ben
nem ellenőrzöd a new_w paraméter értékét, noha kéne, úgyhogy nézzük, honnan hívod meg a függvényt:
a 150 az biztos jó számnak, nem itt lesz a bibi. Az már látszik, hogy a másik két paramétered rossz, mert neked itt a változó értékére lenne szükséged, de helyette sztringeket kapsz, amik a változók nevét tartalmazzák - ld. php sztring kezelés
Itt azért megnéztem, hogy hozod létre ezeket a változókat, s íme:
meg is van a nullával való osztás - te itt össze szeretnéd fűzni a sztringeket, helyette konstansokat osztasz sztringekkel...
a szép az egészben, hogy mindezt te is végigcsinálhattad volna, s ugyanerre az eredményre jutsz
hiányzó idézőjelek
eléésiút
$thum = "gallery/".$_POST["mappa"]."/".thumbs."/".$_FILES["kepek.$x"]["name"];
Most így van, és így se okés.
csak így tovább a 'zsepi' úton
meglesz ez...
Division by zero
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions
Olyan mintha nem érné el a fájlt, amit igazából feltölt.
(Amúgy nem szoltam le a közösséget, egy komoly kérdést tettem fel hogy nem e rosszul irtam le valamit, és nem értik mit akarok)
igaz, valószínűleg nem találja
sztringek használata
a kódod:
így nem azokat a sztringeket kapod, amit szeretnél.
Példa szkript:
köszi