PHP kép átméretező
Sziasztok!
Nemrég egy hasonló című témát indítottam, de ott annyira más irányba kanyarodott a téma, hogy inkább nyitok egy újat, mert ebben már nem csupán elmélkedéssel próbálkozok, hanem valami gyakorlattal is, ámbár nem akar működni, sokat olvasgattam PHP.net-en és vbence produktumát is átnéztem, de nem sikerült sajnos összehozni...
Jelenleg így állok, de nem igazán működik a dolog:Valakinek esetleg van ötlete rá?
Előre is köszönöm, további szép napot mindenkinek!
Szerkesztés: Azt hiszem a bővebb leírás elmaradt: mikor elküldöm a formot, az meghívja ezt a fájlt, de a mentés nem igazán történik meg, a fájl eredményeként nem az "Elmentve!" felirat jelenik meg, hanem egy képfájl.
Mialatt ezt leírtam rájöttem, hogy a header ez esetben nem szükséges, majd eltávolítás után kaptam egy pár hibaüzenetet...
A hibaüzeneteknek valószínűleg az $_FILES['kep']-szel van bajuk, de fogalmam sincs mi lehet a megoldás...
■ Nemrég egy hasonló című témát indítottam, de ott annyira más irányba kanyarodott a téma, hogy inkább nyitok egy újat, mert ebben már nem csupán elmélkedéssel próbálkozok, hanem valami gyakorlattal is, ámbár nem akar működni, sokat olvasgattam PHP.net-en és vbence produktumát is átnéztem, de nem sikerült sajnos összehozni...
Jelenleg így állok, de nem igazán működik a dolog:
<?php
$fajl = $_FILES['kep'];
$meret = getimagesize($fajl);
$magassag = $meret[1];
$szelesseg = $meret[0];
$uj_szelesseg = $_POST['uj_szelesseg'];
if ($magassag > $szelesseg)
{
$eredeti_arany = $szelesseg / $magassag;
$uj_magassag = $eredeti_arany * $uj_szelesseg;
}
if ($magassag < $szelesseg)
{
$eredeti_arany = $magassag / $szelesseg;
$uj_magassag = $eredeti_arany * $uj_szelesseg;
}
if ($magassag == $szelesseg)
{
$uj_magassag = $uj_szelesseg;
}
header('Content-Type: image/jpeg');
$kep_alap = imagecreatetruecolor($uj_szelesseg, $uj_magassag);
$kep = imagecreatefromjpeg($_FILES['kep']);
imagecopyresampled($kep_alap, $kep, 0, 0, 0, 0, $uj_szelesseg, $uj_magassag, $szelesseg, $magassag);
$mentes = '../../fooldal/' . $_FILES['kep']['name'];
imagejpeg($kep_alap, $mentes , 100);
echo "Elmentve!"
?>
Előre is köszönöm, további szép napot mindenkinek!
Szerkesztés: Azt hiszem a bővebb leírás elmaradt: mikor elküldöm a formot, az meghívja ezt a fájlt, de a mentés nem igazán történik meg, a fájl eredményeként nem az "Elmentve!" felirat jelenik meg, hanem egy képfájl.
Mialatt ezt leírtam rájöttem, hogy a header ez esetben nem szükséges, majd eltávolítás után kaptam egy pár hibaüzenetet...
A hibaüzeneteknek valószínűleg az $_FILES['kep']-szel van bajuk, de fogalmam sincs mi lehet a megoldás...
imagejpeg
Hibaüzi?
$kep =
". (Szerk.: megnéztem, Gábor is erre (is) utal, de fontos, hogy mi is tudjuk, melyik az a sor.)Megjegyzem, hogy azt a feltételt nem kezeled, mikor a
($magassag == $szelesseg)
, vagyis négyzet alakú a kép. Jobb lenne az első feltétel utánelse
ágban folytatni.Szerk2.: Figyelmetlen voltam! Máris látom, hogy egy nagyot tévedtem, később - regenerálódás után - újra megnézem, nem akarok (több) hülyeséget írni.
Elérési út
$_FILES
tömbben. Azaz neked a$_FILES['kep']['tmp_name']
fog kelleni, de bővebb információért olvasd el a fenti, illetve a $_FILES tömbbel foglalkozó dokumentációt.Segítségetekkel átalakítván a
(Az én gondoltatom szerint most a probléma az, hogy a TMP fájl, nem képfájl és ezért nem kaphatjuk meg a méretét, de semmi ötletem nincs a megoldásra...)
(sejtelmem szerint ez szintén a TMP miatt van)
(ez szintén)
(ez pedig amiatt, hogy nem kapott értéket az $kep változó)
Utolsó önálló nekifutásként próbáltam keresni valami kész kis egyszerű scriptet, de nem találtam semmi hasznosat, amiből meg lehetne tanulni, hogy hogyan is történjen a dolog.
Valakinek van valami ötlete?
Írasd ki
$_FILES['kep']['tmp_name']
Ellenőrizd, hogy jó képet töltöttél-e fel, feltöltődött-e, ill. a PHP hozzáfér-e? (Nem írásvédett, stb. a könyvtár.)2-3: Elképzelhető, hogy a .jpg kiterjesztés nem tetszik neki? Próbáld ki, hogy első (nulladik) lépésként átmozgatod a fájlt a honlapod egyik könyvtárába (.jpg kiterjesztéssel), majd ezen végzed a módosításokat. (Amikor én csináltam ilyesmit, akkor így tettem.) Én csodálkozom a kiterjesztésen.
4: Pontosabban: a
$kep = false
értéket kapta, mert nem valódi jpeg képből próbáltad kreálni.Úgy tudod leginkább megtanulni, ha kiszenveded legalább egyszer, hogy megírd. Másképp csak "nyomkodni fogod a gombokat" egy nyílt kódon, de nem fogod tudni, hogy mit csinálsz. Ez itt most amúgyis inkább fájlfeltöltési és fájlkezelési gond, azt (is) kéne előbb rendbetenni.
Szerk.: az ideiglenes fájlt a végén illik törölni. Nézd át a Manual fájlfeltöltéssel foglalkozó részét.