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:

	include ('mysql.php');
	function uj_esemeny () {
		if(isset($_POST["uj_esemeny"])) {			
			$nev = $_POST["nev"];
			$ajanlo = $_POST["ajanlo"];
			$info = $_POST["info"];
			$helyszin = $_POST["helyszin"];
			$jegyar = $_POST["nev"];
			$datum = date("Y:m:d");
			$eredeti_kep = basename($_FILES['kep']['name']);
			$szeles = "800";
			$magas = "800";
			$cel = "../elemek/kepek/";
			$cel2 = "../elemek/belyeg/";
			$slq = "INSERT INTO hunprog (nev, ajanlo, info, helyszin, jegyar, kep, datum) VALUES ('$nev', '$ajanlo', '$info', '$helyszin', '$jegyar', '$eredeti_kep', '$datum')";
			$ok = mysql_query($slq);
			list($rszeles, $rmagas) = getimagesize($eredeti_kep);
			$eredeti_arany = $rszeles/$rmagas;			
			if ($szeles/$magas > $eredeti_arany) {
			   $szeles = $magas*$eredeti_arany;
			} else {
			   $magas = $szeles/$eredeti_arany;
			}
			$uj_kep = imagecreatetruecolor($szeles,$magas);
			$fel_kep = imagecreatefromjpeg($eredeti_kep);			
			imagecopyresampled($uj_kep,$fel_kep,0,0,0,0,$szeles,$magas,$rszeles,$rmagas);
			imagejpeg($uj_kep,null,100);
			$cel = $cel . $uj_kep;
			/* $cel2 = $cel2 . $belyeg; */
			move_uploaded_file($_FILES['kep']['tmp_name'],$cel);
			if($ok){
				header('location:aktualis.php?sfel');	
			} else {
			header('location:uj_esemeny.php?nemfel');	
			} } 
	}
 
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
imagejpeg($uj_kep,null,100);  
$cel = $cel . $uj_kep;  
move_uploaded_file($_FILES['kep']['tmp_name'],$cel);  
if($ok){  
    header('location:aktualis.php?sfel');     
} else {  
    header('location:uj_esemeny.php?nemfel');     
}
helyett mit szólnál ehhez (Thomas javaslata alapján):
   
if(imagejpeg($uj_kep,$cel . $uj_kep,100)){  
    header('location:aktualis.php?sfel');     
} else {  
    header('location:uj_esemeny.php?nemfel');     
}
Lenne egy kérdésem is, ez a kódrészlet mit csinál?
list($rszeles, $rmagas) = getimagesize($eredeti_kep);  
$eredeti_arany = $rszeles/$rmagas;            
if ($szeles/$magas > $eredeti_arany) {  
    $szeles = $magas*$eredeti_arany;  
} else {  
    $magas = $szeles/$eredeti_arany;  
}
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
$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:
if(imagejpeg($uj_kep,$cel . $eredeti_kep,100)){    
    header('location:aktualis.php?sfel');       
} else {    
    header('location:uj_esemeny.php?nemfel');       
}  
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.