ugrás a tartalomhoz

php képméretezés dilemma

unregistered · 2010. Jún. 28. (H), 13.52
Hello!

Van egy minkét megoldásban működő "problémám". Szerintetek melyik megoldás jobb és miért?

A kérdés tárgya:
Van egy egyszerű oldal ahova képeket listázok ki.

...
<img src="" border="0" alt="">
<img src="" border="0" alt="">
<img src="" border="0" alt="">
...
Na most ezek a képek elég nagyok így előbb "thumbnail" képeket csinál belőlük egy php oldal és visszatér az átméretezett kicsit képpel.

1. megoldás az hogy az img tag src-jébe beillesztem a php-t így:

...
<img src="thumb_process.php?kepnev=kepnev_1.jpg" alt="">
<img src="thumb_process.php?kepnev=kepnev_2.jpg" alt="">
<img src="thumb_process.php?kepnev=kepnev_3.jpg" alt="">
...
VAGY

2. megoldás, hogy magát a php kódot "ciklusozom" be hogy kilistázza a képeket átméretezve

// átméretező kódrész
...
while (van kép) {
    echo '<img src="$atmeretezett_kep1" alt="">';
}
...
Nekem az 1. megoldás elég szimpatikus, szóval itt arra lennék főleg kíváncsi, hogy mennyire helyes megadni az img tag src-jének egy php oldalt ami a képpel tér vissza? Mik lehetnek a hátrányai?

Köszönöm előre is!
 
1

szóval

thgab · 2010. Jún. 28. (H), 14.36
a 2.megoldás nem működik.
Az első megoldás a helyes. A baj csak az vele, hogy minden egyes kéréskor újra kell generálnia a kis képet.
Úgy kell megoldani, hogy a képet generálja le egyszer, majd mentse el(pl egy thumbs alkönyvtárba), és a következő kéréskor már a lementett képet szolgálja ki.
2

terhelés

unregistered · 2010. Jún. 28. (H), 15.08
Miért nem kellene működnie?
Igen úgy lenne jó, de egyáltalán mekkora az erőforrásigénye mondjuk 100 kép kilistázásnak ilyen php-s megoldásnak?
3

a 2. megoldásnál

thgab · 2010. Jún. 28. (H), 15.25
mit tartalmaz a $atmeretezett_kep1 változó?
100 kép listázásánál a thumb_process.php 100-szor fut le.
Az igazán jó megoldás az lenne ha mod_rewritetal kezelnéd le a kisképes dolgot.
pl:
<img src="thumbs/kepnev_1.jpg">
a thumbs könyvtárba kell a thumb_process.php amire átirányítod a nem létező fájlra mutató linket. A thumb_process.php-val legeneráltatod a jpg-t, elmented a mappába és meg is jeleníted.
A következő kéréskor már nem fut le a thumb_process, mivel akkor már elérhető a kis kép, és a webszerver fogja kiszolgálni.
4

Vbence képméretezője

ene · 2010. Jún. 28. (H), 16.59
Használd ezt: http://vbence.web.elte.hu/php_kep_meretezes_vizjel.html
5

Pro és kontra

Pred · 2010. Jún. 28. (H), 19.07
Az első megoldás esetén minden képet minden esetben fel kell dolgoznia a PHP-nak. Ez a szervernek memória, cpu és hdd használat. Nem a legjobb megoldás, gyakorlatilag ez a leginkább erőforrás igényes.

A második megoldás, miszerint egyszer legenerálod, még mindig kicsit overhead, tekintve, hogy a kiszolgálást nem a webszerver, hanem a PHP végzi, ezzel felesleges lépéseket és erőforrásokat pazarolsz a kiszolgálásra.

Az átirányításos módszer nekem a legszimpatikusabb, hiszen ilyenkor csak akkor hajtod meg a php-t ha arra valóban szükség van. Ezt maximum egy takarító script-tel fejelném meg, ha korlátozott a kapacitás a lemezen.

Egy megoldás lehet még - igaz ehhez sok hely kell a szerveren - hogy a fájlokat minden szükséges méretre a feltöltést követően átméretezed. Így mindig csak a webszervert használod a megjelenítéshez.

Ha tehát kevés a tárhely és nincs átirányítás (vagy custom 404 handler), akkor marad a tisztán php-s megoldás.
Ha van hely, akkor mehet a cache-elős móka (egyszer generál, utána php szolgál ki). Egy takarító script elfér mellette.

Ha van sok hely, akkor az össze képet előre legyárthatod.

Ha kevés a hely és van átirányítás, akkor pedig a köztes út (átirányítás php-ra ha nincs meg a kép) és egy külön script (cron) ami a képeket valamilyen algoritmus szerint törli (pl az x ideje nem használtak)
7

Ha a képet gyakran

deejayy · 2010. Jún. 29. (K), 07.33
Ha a képet gyakran frissítik/módosítják, azt hogyan lehet lekezelni az átirányításos módszerrel?

Mert egy php script mondjuk tudná ellenőrizni a nagy kép fájldátumát, de az átirányításban nincs ilyen lehetőség.
9

Lehetőséhek

Pred · 2010. Jún. 29. (K), 16.54
Megint csak arra fogok jutni, mint az előző válaszommal. Az a döntő, hogy milyen környezetben fog működni a script.

Ha eleve mindig a php szolgál ki, akkor ez már nem is kérdés.

Csak átirányítással sehogy.

A lehetőségeid - a teljesség igénye nélkül - a következők lehetnek:
- amikor változik a kép, a már elkészült átméretezett változatokat törlöd, így a következő kiszolgálásnál újra létrejönnek
- amikor feltöltik / a helyére kerül az új kép létrehozod a megfelelő méreteket és felülírod az elévült verziót.

Amúgy mindkét esetben figyelembe kell venned, hogy a kliens is használ cache-t, ez időnként bezavarhat.
6

elöttem szólok szinte mindent elmondtak de

solkprog · 2010. Jún. 28. (H), 20.06
...annyit tennék még hozzá hogy ezek alapján dönts:
-Összesen hány képről van szó? Mekkora a tárhelyed?
-Egy oldalon ebből kb hány kép jelenik meg?
-Gyakran akarod módosítani a képek méretét, minőségét?
-Kb hány oldaltöltésre számítasz?

Illetve még egy kis megjegyzésem volna hogy ha a dinamikus képgenerálás mellett döntsz, akkor figyelj rá hogy a megfelelő fejlécek ki legyenek küldve hogy a böngésző tudja cache-elni a képeket.
10

válaszok

unregistered · 2010. Jún. 30. (Sze), 17.12
-Sok képről van szó, de ezek külön mappákban vannak az oldalon is és a tárhelyen is.
-A tárhely nem probléma, mert saját szerveren fut.
-Ha megnyitsz egy mappát az oldalon akkor 20/30 kép látszódik/töltődik be egyszerre.
-A képek mérete, minősége fix nem változik.
-Kevés (NAGYON KEVÉS) oldaltöltődésre számítok, mivel nem olyan profilú az oldal ami tömegeknek szól. Kb havi 100 látogató és akkor nagyon sokat mondtam.

A megfelelő fejlécekre figyelek. Sőt, fel is szabadítom a memóriát a szerveren miután elküldte a böngészőnek a kisképet.
8

phpthumb

plip · 2010. Jún. 29. (K), 12.42
Van erre kész megoldás:
http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php

cache-elni is tud, és nem csak thumbra jó, hanem szinte bármire, vízjelezésre, stb