Fotogaleria

Ahojte. Chystam sa na fotogaleriu. Mam taky napad, skuste mi na to napisat co si o tom myslite, nazory, navrhy a pod....

Takze mam taku prestavu:

Fotky potrebujem rozdelit do kategorii a podkategorii, takze:
script fotogal.php bude primat kategoriu ako cestu k adresaru cez nejaku premennu z ktorej sa fotky maju natahovat... pr.: fotoga.php?path=/...

bude urceny hlavny adresar s hlavnou kategoriou
?path=/* ... bude zobrazovat fotky z /fotogalery/*

z daneho adresara nalistuje vsetky podadresare a zobrazi ich ako podkategorie (foreach: <a href="?path=/...">...</a>)

To hlavne co vsak chcem, a s cim nemam velke skusenosti, je dynamicke vytvaranie thumbsov. Otvaranie obrazkov nie priamo, ale cez nejake php, ktore to moze logovat, rozhodovat o pristupe a pod...

priklad: pre thumbsy: ...src=".../foto.php?thumb=/.......jpg/.png" s tym ze je jedno aky rozmer alebo typ suboru ma povodny subor, chcel by som aby sa script pokusil najst subor s "/fotogalery/..../t_*.gif" (zmenseny na max-width, max-height) a ak nebude existovat, tak ho vytvori dynamicky a ulozi do adresara, k originalu aby sa nemusel zakazdym generovat.

po kliknuti na znenseny obrazok by sa velky mohol stahovat cez .../foto.php?big=... aby client nemohol zistit skutocne umiestnenie obrazku a pristupovat k nemu priamo.

...tiez rozmyslam nad nejakymi popismi k obrazkom, este stale niesom 100% rozhodnuty, ci ich budem davat do DB, alebo ako subor do adresara s obrazkami... Ten subor sa mi viac pozdava. V jednom subore by mohol byt popis galerie, a jednotlivych obrazkov, v nejakom rozumnom formate...

Za vsetky vase nazory vopred dakujem :)
Resize obrazku treba takto :

list($width, $height) = getimagesize($filename);
$newheight = 320;$cifra = $height/320;
$newwidth = $width/$cifra;
if ($newwidth>480) {$novecislo = $newwidth/480;$newwidth=480;
$newheight = 320/$novecislo;}}

dal pouzijes :
ImageCopyResized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
vice na
http://cz.php.net/manual/en/function.imagecopyresized.php
Jen přihodím jeden nápad, co používám.

Komentáře k obrázkům ukládám přímo do JPEG Comment těch fotkek. O starost méně s databází (i kdyby byla v texťáku). Navíc se můžu hrabat v adresářích s fotkami ručně, (vymazat, přídat) a nemusím potom řešit odkazy v databázi.

Dá se na to stáhnout třída, takže uživatelsky nenáročné.
A je na to nějakej PHP skriptík? :) Nevím přesně, jak by se dalo pomocí PHP upravovat JPEG Comment fotky. Dík.
Pokud vím, tak zbi psal, že na to je na netu hotová třída. Hledej Puňťo, hledej. Třeba na Googlu ;)
<HTML>Má to své pro a proti, já bych sice tuhle variantu nevolil ale řešení to špatné není</HTML>
= zbi (knizky.unas.cz) =
:) Tu DB ale potrebujes stejne pro zarazeni do alb a podobne. Rozhodne je rychlejsi vytahnout z DB id fotek z prislusneho alba nez prohledavat 10.000 obrazku a jejich coment rozsekavat a zpracovavat
= Prog. (coma.wz.cz) =
"dynamicke vytvaranie thumbsov"
Nedoporucuji, protoze to dlouho trva. Lepsi je vytvorit nahledy pri vkladani foto. 4-6k te nezabije navic a zrychli se tim mnohonasobne nacitani stranky.

www.boutell.com/gd/
interval.cz/clanky/php-skript-pro-generovani-galerie-obrazku-2/
cz2.php.net/imagecopyresampled
cz2.php.net/GetImageSize
www.linuxsoft.cz/sw_detail.php?id_item=871
www.webtip.cz/art/wt_tech_php/liquid_ir.html

upravenou verzi z interval mam tu:
http://www.volny.cz/peter.mlich/www.htm#msub11
(zdroj: ppgal.rar)
Muzu ti dat zdrojak tohoto (30k, 5+5k tvori zpracovani obrazku):
http://mracek.hostuju.cz/album/album.php
- pripadne, by jste mi mohli napsat k tomu nekdo nejake pripominky, chyby. To jsem ted nedavmno udelal a ten clovek pro ktereho se nejak nevyjadril.
http://mracek.hostuju.cz/album/album.php
heslo tam je aaa a nemazte mi tu prvni foto, pripadne vsechny, co jste si tam nenahrali
pro zadani textu je FCE imagestring(); jako priklad uvedu zde toto:
function declare_image($codovani,$file) {
$newheight = 100;
$height = 22;
$arr = array();
//$font = imageloadfont("Arial black");
$thumb = imagecreatetruecolor(100,$height);
$whitex=imagecolorallocate($thumb,0,0,0);
imagefilledrectangle($thumb,0,0,100,$height,$whitex);
$arr["red"] = rand(100,200)+55;
$arr["green"] = rand(100,200)+55;
$arr["blue"] = rand(100,200)+55;
$white=imagecolorallocate($thumb, $arr["red"], $arr["green"], $arr["blue"]);
imagefilledrectangle($thumb,0,1,100,20,$white);
$col=imagecolorallocatealpha($thumb,120,100,0,ceil(150));
imagefilledrectangle($thumb,100,1,100,20,$col);
$x1 = 0;
$y1 = 10;
$x2 = 100;
$y2 = 10;
$textcolor = imagecolorallocate($thumb, 100, 100, 100);
$color = imagecolorallocate($thumb, 255, 80, 0);
$sys[1] = chr(rand(48,90));
$sys[2] = chr(rand(48,90));
imageline($thumb,$x1,$y1,$x2,$y2,$color);
imageline($thumb,15,0,15,22,$color);
imageline($thumb,50,0,50,22,$color);
imageline($thumb,85,0,85,22,$color);
imagestring($thumb, 20, 20, 3, $codovani, $textcolor);
//header("Content-Type: image/jpeg");
Imagejpeg($thumb,'',80);
imagedestroy($thumb);
}

Tato FCE generuje nahodny kod jako obrazek to same lze ucinit i s obyc obrazkem stim ze misto nahodneho kodu se vlozi text.
Sem zapis toto ($codovani = "jsem mamlas"; ) a uvidis co se stane na obrazku.
Snad uz otestovat a vyzkouset si to dovedes sam ne.
to peta (peter-mlich.wz.cz)

Databázi potřebuji a nepotřebuji, jak se to vezme. Moje galerie se vztahují k článkům. Každá galerie je ve svém adresáři. Název galerie je ID článku. Komentáře k jednotlivým fotkám jsou v jejich JPG Commentech.

Takže vypíšu článek a podle jeho ID zobrazím fotky z adresáře tohoto čísla.

Na jiném mém webu mám všechny fotky v jednom adresáři a číslo galerie je obsaženo v názvu fotky. Příklad: g13_m03.jpg (třetí fotka z galerie číslo 13, m znamená malá, tedy náhled). Velká fotka by byla např. g125_v12.jpg.

Obě řešení spolehlivě fungují.
=certcv (certcv.wz.cz)=
vdaka za scripty, ale som este len vo faze uvazovania :-)


=zbi (knizky.unas.cz)=
"...přímo do JPEG Comment těch fotkek. O starost méně s databází..."

njn, pekna myslienka, keby slo o mensiu staticku galeriu. Fakt by to bolo asi najlepsie riesenie :-) Ale prieisl som na to, ze nejaka ta db sa zide...


=peta (peter-mlich.wz.cz)=
"dynamicke vytvaranie thumbsov"

...myslel som to tak, ze ak niekto poziada o obrazok ...thumb.php?file=... tak sa script pokusi najst zmenseny subor a poslat ho, ak sa nenajde, tak sa resmple-ne, a ulozi na disk a posle, aby sa nabuduce nemuzel zmensovat znova... (to len preto ze som hrozne lenivi robit to rucne :-)


=peta (peter-mlich.wz.cz)=
":) Tu DB ale potrebujes stejne pro zarazeni do alb a podobne. Rozhodne je rychlejsi vytahnout z DB id fotek z prislusneho alba nez prohledavat 10.000 obrazku a jejich coment rozsekavat a zpracovavat"

Povodna myslienka bola taka, ze kategorie = stromova adresarova struktura, nazvy fotiek = nazov suboru (bez pripony) a popis nejako externe... ale bolo by to uplne nepriehladne. A fakt pomale, zakazdym scanovat adresare, prasovat nejaky vlastny subor, ci xml... talo by to serveru zabrat...


=all=
takze najnovsia myslienka, co ma tak napada, postavena na db:

Modul na spravu fotiek. Pridavanie by vyzeralo nasledovne:
nakopnem obr do adresara/podadresara/... otvorim modul na spravu, najdem dotycny adresar a click na "reindex dirrectory" potom by sa subory z adresara naindexovali do tabulky v db. Potom by prisiel dalsi button "regenerate all thumbs", ktory by sa postaral o nahlady... Ak by vsak nahlady neexistovali, tak by sa generovali dynamicky, pri prvej poziadavke (povodna myslienka)
Kedze by to bolo vsetko v DB, dali by sa na to pripajat nejake countery, hodnotenia, diskusie... a dalsia vyhoda, obrazky by sa volali podla id (namiesto image.php?file=/category1/subcategory/image.jpg by bolo image.php?id=123) cize ich skutocne umiestnenie by bolo uplne skryte pred okom uzivatela...

Dakujem za vsetky napady :-)