ugrás a tartalomhoz

Kép átméretezésnél nullával osztás

Anonymous · 2006. Szep. 19. (K), 18.18
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.
  1. <?php  
  2.       function createthumb($name,$filename,$new_w){  
  3.                       $system=explode('.',$name);  
  4.                       $src_img=imagecreatefromjpeg($name);  
  5.                       $old_x=imageSX($src_img);  
  6.                       $old_y=imageSY($src_img);  
  7.                       $thumb_w=$new_w;  
  8.                       $thumb_h=ceil($old_y/($old_x/$new_w));  
  9.                       $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);  
  10.                       imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);  
  11.                        
  12.                       if (preg_match("/png/",$system[1])) {  
  13.                               imagepng($dst_img,$filename);  
  14.                       } else {  
  15.                               imagejpeg($dst_img,$filename);  
  16.                       }  
  17.               imagedestroy($dst_img);  
  18.               imagedestroy($src_img);  
  19.               }  
  20.          
  21.               if($_GET['act'] == "upload") {  
  22.                       for($x=0;$x<$_POST['fajlok'];$x++) {  
  23.                               if (($_FILES["kepek$x"]["type"] == "image/jpeg") || ($_FILES["kepek$x"]["type"] == "image/pjpeg")) {  
  24.                                       mkdir("gallery/{$_POST['mappa']}", 0700);  
  25.                                       mkdir("gallery/{$_POST['mappa']}/thumbs", 0700);  
  26.                                       move_uploaded_file($_FILES["kepek$x"]["tmp_name"], "gallery/{$_POST['mappa']}/" . $_FILES["kepek$x"]["name"]);  
  27.                                       $eredeti = gallery/$_POST["mappa"]/$_FILES["kepek.$x"]["name"];  
  28.                                       $thum = gallery/$_POST["mappa"]/thumbs/$_FILES["kepek$x"]["name"];  
  29.                                       createthumb('$eredeti','$thum',150);  
  30.                                       echo"A fájl másolása kész! {$_FILES["kepek$x"]["name"]}<br />";  
  31.                               } else {  
  32.                                       echo"Hiba! A fájl csak kép lehet!";  
  33.                               }  
  34.                       }  
  35.               }   
Köszönöm!
 
1

méretezés

Anonymous · 2006. Szep. 20. (Sze), 16.33
Csodálom hogy még nem érkezett válasz, valamit rosszul fogalmaztam?
4

hogyan keressünk bugot

zsepi · 2006. Szep. 20. (Sze), 17.07
Csodálom hogy még nem érkezett válasz, valamit rosszul fogalmaztam?

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
  1. $thumb_h=ceil($old_y/($old_x/$new_w))  

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:
  1. createthumb('$eredeti','$thum',150);  

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:
  1. $eredeti = gallery/$_POST["mappa"]/$_FILES["kepek.$x"]["name"];  
  2. $thum = gallery/$_POST["mappa"]/thumbs/$_FILES["kepek$x"]["name"];  

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
2

hiányzó idézőjelek

Táskai Zsolt · 2006. Szep. 20. (Sze), 17.00
korrekt a kérdésed, csak azt nem értem, hogy ha ilyen szabatosan meg tudod fogalmazni, hogyhogy nincs meg a megoldásod is rá. ha nullával való osztás van, akkor a "/" jeleket kell végignézni a kódban. például itt vagy egy, ami nem tűnik jónak:
  1. $eredeti = gallery/$_POST["mappa"//...  
ez az osztás tényleg nem az igazi...
3

eléésiút

Anonymous · 2006. Szep. 20. (Sze), 17.04
ez egy elérési út lenne

$eredeti = "gallery/".$_POST["mappa"]."/".$_FILES["kepek.$x"]["name"];
$thum = "gallery/".$_POST["mappa"]."/".thumbs."/".$_FILES["kepek.$x"]["name"];


Most így van, és így se okés.
5

csak így tovább a 'zsepi' úton

Táskai Zsolt · 2006. Szep. 20. (Sze), 17.17
és most mi a hibaüzenet, és melyik sorból jön?

meglesz ez...
6

Division by zero

Anonymous · 2006. Szep. 20. (Sze), 17.48
Division by zero on line 53
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)
7

igaz, valószínűleg nem találja

Táskai Zsolt · 2006. Szep. 20. (Sze), 17.57
amíg nem látod, hogy hol keres és mit, addig nehéz eldönteni, hogy mi a helyzet. a helyedben én kiiratnám a createthumb függvényben a bejövő két path-t. azt összevetve a létező fájl helyével már talán közelebb leszel...
8

sztringek használata

zsepi · 2006. Szep. 21. (Cs), 08.31
mint a korábbi hozzászólásomban is jeleztem, rosszul hívod meg a createthumb fv-t!

a kódod:
  1. createthumb('$eredeti','$thum',150);  

így nem azokat a sztringeket kapod, amit szeretnél.
Példa szkript:
  1. <?php  
  2. $eredeti = 'eredeti.png';  
  3. $thum = 'eredeti.thumb.png';  
  4. var_dump('$eredeti');  
  5. var_dump('$thum');  
  6. ?>  
ennek a kimenete pedig:
  1. string(8) "$eredeti"  
  2. string(5) "$thum"  
a var_dump fv. pedig nagyon hasznos debugoláshoz
9

köszi

Anonymous · 2006. Szep. 21. (Cs), 19.04
máris rájöttem a gondra