ugrás a tartalomhoz

Adatfeltöltés: sikertelen képfeltöltés..

Mycro · 2009. Dec. 9. (Sze), 11.21
Sziasztok! Admin oldalra csinálok adatfeltöltést, és képet is szeretnék átméretezéssel beletenni. Olvastam pár dolgot erről itt a weblaboron, és máshol (pl.: http://www.php-blog.hu/php-magyar-kezikonyv/ref.image.html ), és imageresampleddel() méretezném át (jobb képminőség miatt), és tölteném fel/másolnám a képet (majd a bélyegképet, de azt még nem írtam meg, előbb ez működjön..). Az a baj hogy, teljesen rossz helyre rakja, vagy csak a fekete színű üres képet rakja, vagy jó helyre pakolja csak resurce # id7 nevet ad neki kit. nélkül, és még sorolhatnám balszerencsés próbálkozásaimat.Kérlek segítsetek, mert már kezdek belekavarodni, pedig elvileg egyszerű..

Most ez a kód:
  1. include ('mysql.php');  
  2. function uj_esemeny () {  
  3.     if(isset($_POST["uj_esemeny"])) {             
  4.         $nev = $_POST["nev"];  
  5.         $ajanlo = $_POST["ajanlo"];  
  6.         $info = $_POST["info"];  
  7.         $helyszin = $_POST["helyszin"];  
  8.         $jegyar = $_POST["nev"];  
  9.         $datum = date("Y:m:d");  
  10.         $eredeti_kep = basename($_FILES['kep']['name']);  
  11.         $szeles = "800";  
  12.         $magas = "800";  
  13.         $cel = "../elemek/kepek/";  
  14.         $cel2 = "../elemek/belyeg/";  
  15.         $slq = "INSERT INTO hunprog (nev, ajanlo, info, helyszin, jegyar, kep, datum) VALUES ('$nev', '$ajanlo', '$info', '$helyszin', '$jegyar', '$eredeti_kep', '$datum')";  
  16.         $ok = mysql_query($slq);  
  17.         list($rszeles$rmagas) = getimagesize($eredeti_kep);  
  18.         $eredeti_arany = $rszeles/$rmagas;            
  19.         if ($szeles/$magas > $eredeti_arany) {  
  20.            $szeles = $magas*$eredeti_arany;  
  21.         } else {  
  22.            $magas = $szeles/$eredeti_arany;  
  23.         }  
  24.         $uj_kep = imagecreatetruecolor($szeles,$magas);  
  25.         $fel_kep = imagecreatefromjpeg($eredeti_kep);             
  26.         imagecopyresampled($uj_kep,$fel_kep,0,0,0,0,$szeles,$magas,$rszeles,$rmagas);  
  27.         imagejpeg($uj_kep,null,100);  
  28.         $cel = $cel . $uj_kep;  
  29.         /* $cel2 = $cel2 . $belyeg; */  
  30.         move_uploaded_file($_FILES['kep']['tmp_name'],$cel);  
  31.         if($ok){  
  32.             header('location:aktualis.php?sfel');     
  33.         } else {  
  34.         header('location:uj_esemeny.php?nemfel');     
  35.         } }   
  36. }  
 
1

Kis lépés...

Thomas · 2009. Dec. 9. (Sze), 21.15
Csak egy megjegyzés az imagejpeg használatához

http://php.net/manual/en/function.imagejpeg.php

imagejpeg ( resource $image [, string $filename [, int $quality ]] );
2

esetleg

a.d.a.m · 2009. Dec. 9. (Sze), 23.21
  1. imagejpeg($uj_kep,null,100);    
  2. $cel = $cel . $uj_kep;    
  3. move_uploaded_file($_FILES['kep']['tmp_name'],$cel);    
  4. if($ok){    
  5.     header('location:aktualis.php?sfel');       
  6. else {    
  7.     header('location:uj_esemeny.php?nemfel');       
  8. }  
helyett mit szólnál ehhez (Thomas javaslata alapján):
  1.      
  2. if(imagejpeg($uj_kep,$cel . $uj_kep,100)){    
  3.     header('location:aktualis.php?sfel');       
  4. else {    
  5.     header('location:uj_esemeny.php?nemfel');       
  6. }  
Lenne egy kérdésem is, ez a kódrészlet mit csinál?
  1. list($rszeles$rmagas) = getimagesize($eredeti_kep);    
  2. $eredeti_arany = $rszeles/$rmagas;              
  3. if ($szeles/$magas > $eredeti_arany) {    
  4.     $szeles = $magas*$eredeti_arany;    
  5. else {    
  6.     $magas = $szeles/$eredeti_arany;    
  7. }  
3

Köszi. Kipróbálom. :-)

Mycro · 2009. Dec. 10. (Cs), 09.28
Köszi, kipróbálom otthon őket. Még ma visszaírok hogy sikerült.
Bocs a lassúságért, de nem napközben nem mindig vagyok netközelben.
Az a kódrészlet, arra van ha, kisebb a feltöltött kép mint amit szeretnék akkor az új kép mérete ne változzon, mert a kisebb méret is jó (ezt egy barátomtól kaptam anno.).
Meg azon, próbálkozok hogy mondjuk, van egy, 600*800-as plakát akkor az ne legyen 800*600-ra széthúzva mert az hülyén fest.
4

Nem megy...

Mycro · 2009. Dec. 11. (P), 09.16
Sziasztok bocs a lassúságért, de így tok netezni...
A probléma fent áll még mindig. Kivettem azt a kódrészletet (amire rákérdeztél) és kipróbáltam kódot amit adtatok, a többi változatlan. Eredmény.
Adatbázisban jó fájlnév. Minden esetben berak egy Resource id #7 -nevű kiterjesztés nélküli fájlt a megfelelő helyre (..elemek/kepek) és ennyi.
Magyarul megcsinálja az új üres fájlt (képet) a megadott helyre, csak nem rakja össze a feltöltött képpel..
Jó párszor végignéztem a kódot, összehasonlítottam a manuallal, és nem tudom hol a hiba. (Kihagytam vhol 1 vesszőt, és nem veszem észre????)
5

Emiatt

a.d.a.m · 2009. Dec. 11. (P), 10.43
  1. $uj_kep = imagecreatetruecolor($szeles,$magas);  
Ez a sor egy erőforrás azonosítót ad vissza (pl. Resource id #7)
imagecreatetruecolor
(PHP 4 >= 4.0.6, PHP 5)

imagecreatetruecolor -- Create a new true color image
Leírás
resource imagecreatetruecolor ( int width, int height )
imagecreatetruecolor() returns an image identifier representing a black image of the specified size.

és te ezen a néven próbálod menteni a képet, helyesen esetleg így lehet:
  1. if(imagejpeg($uj_kep,$cel . $eredeti_kep,100)){      
  2.     header('location:aktualis.php?sfel');         
  3. else {      
  4.     header('location:uj_esemeny.php?nemfel');         
  5. }    
6

Akkor itt lehet baj. Azzal

Mycro · 2009. Dec. 11. (P), 11.27
Akkor itt lehet baj. Azzal próbáltam amit írtál, szal most módosítom, kipróbálom, sajna sztem csak este tok ide visszaírni, és nagyon köszönöm a sok segítséget, és figyelmet. :-)
Másik kérdés, tudsz valami jó manualt, vagy cikket ahol optimalizálásról és objektum orientálásról írnak, mert oké hogy megírom az átméretezést feltöltést, de még akkor még a bélyeget is meg kéne hozzá csinálnom, ami odaömlesztve mellette nem szép, és még csak kezdő vok (főleg oop-ban)...
7

függvény

a.d.a.m · 2009. Dec. 11. (P), 11.56
Szerintem rakd egy függvénybe az átméretezős részt, ami bekéri az új szélességet és magasságot, az eredeti kép elérési útját, és a kimeneti kép nevét (útvonalát). Utána ha át akarsz valamit méretezni csak meghívod ezt a függvényt.

Ami a manualt illeti, hát nem tudom én erre a könyvre emlékszem OOP és PHP kapcsán: George Schlossnagle: PHP fejlesztés felsőfokon. A többiek biztos tudnak mást is.