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.
<?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!";
                              }
                      }
              } 
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
$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:
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:
$eredeti = gallery/$_POST["mappa"]/$_FILES["kepek.$x"]["name"];
$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:

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

így nem azokat a sztringeket kapod, amit szeretnél.
Példa szkript:
<?php
$eredeti = 'eredeti.png';
$thum = 'eredeti.thumb.png';
var_dump('$eredeti');
var_dump('$thum');
?>
ennek a kimenete pedig:
string(8) "$eredeti"
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