Starší komentáře ke článku: PHP skript pro generování galerie obrázků 2.

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Sanyn

Datum vložení: 31.5.2001 11:03:40

Na začátku bych chtěl říci, že článek je super a určitě pro mnoho lidí hodně inspirativní.
Napadá mě, že zajímavý by byl i script, který by pomocí vysvětleného upravil nalezený obrázek a odeslal ho přímo do stránky.
Vytvořil bych tak script který by při každém nalezení obrázku v adresáři zavolal <img src="zm_obrazek.php?ID=<I>číslo_v_databazi</I>"> nebo ještě jednodušeji <img src="zm_obrazek.php?jmeno_obr=<I>jmeno_souboru</I>">. Tento volaný script by mohl vypadat zhruba takto:

<?
$soub="./obrazky/oobrazek.jpg";         // zadání obrázku - možno i z databáze nebo jako parametr při volání scriptu
$del=100;                              // zadání delšího rozměru pro výsledný náhled
If(File_exists($soub)){                // kontrola zda originál existuje
 $obr1=ImageCreateFromJpeg($soub);     // načtení originálu do proměnné
 $rx1=ImageSX($obr1);                  // zjištění šířky
 $ry1=ImageSY($obr1);                  // zjištění výšky
 if($rx1>$ry1){                        // porovnání šířky a výšky
  $rx2=$del; $ry2=$ry1*$del/$rx1;      // výpočet rozměrů nového obrázku
 }else{
  $ry2=$del; $rx2=$rx1*$del/$ry1;      // výpočet rozměrů nového obrázku
 }
 $obr2=ImageCreate($rx2, $ry2);        // vytvoření náhledu
 ImageCopyResized($obr2, $obr1, 0, 0, 0, 0, $rx2, $ry2, $rx1, $ry1);   // kopie originálu do náhledu
 Header("Content-type: image/jpeg");   // hlavička
 ImageJpeg($obr2);                     // obrázek
 ImageDestroy($obr1);                  // uvolnění originálu
 ImageDestroy($obr2);                  // uvolnění náhledu
}
?>

Sám si takový soubor připravuji takže pokud by měl o něj někdo zájem, poskytnu ho po dokončení. (předpokládám cca měsíc).
Tento script je upraven, nebo spíše zjednodušen na používání JPEG obrázků, lze jej ale jistě rozšířit i na využívání ostatních formátů, které podporuje server na kterém script běží.

Avatar

Autor komentáře: Vilém Kužel

Datum vložení: 31.5.2001 11:23:10

Navrhujete sice funkční řešení, ale neuvědomujete si, že tím dosti zatěžujete server - při každém požadavku na obrázek (resp. celou stránku náhledů) se tento musí znovu přepočítat. Myslím, že je lepší to přepočítat jen jednou při změně obsahu galerie a pak jen tahat náhledy z disku.
Upravil jsem script tak, aby byly náhledy zmenšeny v poměru - někdy se to může hodit. Tady je řešení:
<B>V konverzní stránce nahraďte řádky:</B>
$img_cil = ImageCreate($velx,$vely); // vytvorime prostor pro cilovy obrazek
ImageCopyResized($img_cil,$img_zdroj,0,0,0,0,$velx,$vely,ImageSX($img_zdroj),ImageSY($img_zdroj)); // zmensime obrazek
<B>za řádky:</B>
$vely = ($velx/ImageSX($img_zdroj))*ImageSY($img_zdroj);
$img_cil = ImageCreate($velx,$vely); // vytvorime prostor pro cilovy obrazek
ImageCopyResized($img_cil,$img_zdroj,0,0,0,0,$velx,$vely,ImageSX($img_zdroj),ImageSY($img_zdroj)); // zmensime obrazek
<B>No a zadávání výšky můžeme zakázat:</B>
Výška: <input type=text name=vely Disabled>
(případně úplně vymazat). Podobně lze script upravit tak, aby se na danou velikost prepočítal větší z rozměrů - potom mám jistotu, že maximální obrázek v galerii (náhled) bude zabírat čtverec o straně podle zadané velikosti.
VK

Avatar

Autor komentáře: Sanyn

Datum vložení: 31.5.2001 14:45:34

 Já souhlasím s tím že zatížím server, ale pokud se nebude jednat o galerii o řádově stovkách obrázků, myslím že to server zvládne.
 Pokud chci vyrobit náhledy obrázků měl jsem v ruce již dva nástroje kterými to lze udělat na vlastním PC i s vytvořením HTML stránky. Nemusím na to vytvářet script na serveru.
 Opravdu považuji využívání těchto příkazů na jedno použití zbytečné (můj subjektivní názor) a sílu této možnosti vidím v tom, že na serveru je jeden obrázek a já si ho mohu dle druhu stránky (ikony, malé náhledy, velké náhledy a skutečná velikost) zobrazit jak potřebuji, jen tím že zadám parametr pro maximální rozměr.

Avatar

Autor komentáře: Miroslav Kučera

Datum vložení: 31.5.2001 15:18:02

No, server obvykle neslouzi pouze jako generator obrazku, ale obvykle na nem bezi SQL db, redakcni system, reklamni system, diskuse, a pokud se jedna o free-hosting, tak takove dva skripty a cely vykon serveru jde k šípku....

Avatar

Autor komentáře: Vilém Kužel

Datum vložení: 31.5.2001 15:51:13

Moje rec! Navic je tohle reseni vyhodne, pokud si chce klient sam aktualizovat galerii. Proste uploadne surove fotky do nejakeho adresare a ja mu z nich prvnim pruchodem udelam nahledy a druhym pruchodem "velke" obrazky... Reseni "na tlacitko". (Pravda, neni tu zadna korekce obrazu, ale kazdej spas neco stoji). Pokud mi na serveru bezi nekolik(desitek) webu, tak je kazdej kousek vykonu dobrej!
VK

Avatar

Autor komentáře: ygzo

Datum vložení: 8.6.2003 23:46:36

Da sa pomocou nejakej funkcie v PHP zistit o aky typ suboru sa jedna? Ci je to jpg, gif alebo png. Chcem spravit vkladanie obrazkov tovarov a bol by som rad, keby sa to dalo spravit bez toho, aby uzivatel musel vediet o aky typ obrazku sa jedna?
Dakujem.
Majte sa.

Avatar

Autor komentáře: Diwi

Datum vložení: 19.6.2003 13:17:01

Kdyz nactes vysledek z formulare (pole nazev souboru) do $soubor tak typ souboru bude dostupny pod $soubor_type viz. tento clanek <a href='http://www.interval.cz/clanek.asp?id=725' target='_blank'>http://www.interval.cz/clanek.asp?id=725</a>

Avatar

Autor komentáře: kozlik_sikula

Datum vložení: 8.3.2004 0:34:05

Na řádku 8. chybí komentářové značky //

Avatar

Autor komentáře: martin

Datum vložení: 18.12.2004 23:33:07

ma to jeden malinky problem a to ten ze pri spracovavani vacsich obrazkov prekracuje mnozstvo pamete potrebnej na spracovanie maximum povolene od vacsiny poskytovatelov webovych priestorov. Zatial sa mi nepodarilo tento problem vyriesit. Keby niekto vedel ako na to poradte prosim.
Dakujem

Avatar

Autor komentáře: Mephi

Datum vložení: 3.1.2009 10:32:20

tak si tam dej omezenej upload na 1MB treba

Avatar

Autor komentáře: Honza

Datum vložení: 24.2.2005 19:05:11

ahoj mam mensi problem. Po kompilaci GD se me nikde nevytvorila knihovna gd.so. Nevite nekde kde ji mam vzit? =:-)

Avatar

Autor komentáře: Honza

Datum vložení: 24.2.2005 19:06:42

a jee poslal sem to nechtene nekam jinam =:-((

Avatar

Autor komentáře: simka

Datum vložení: 19.9.2005 14:11:36

zkoušel jsem tento super skript, po vyladění menších chyb (někde chyběl odznačkovaný komentář a předělal jsem to, aby to šlo při register_globals = off) jsem ale narazil na problém - u výsledného obrázku se zmenší počet barev a nevypadá pěkně. co s tím? dík za radu

Avatar

Autor komentáře: nomik

Datum vložení: 1.10.2005 18:33:29

jo stím sem se take setkal, je třeba vyměnit ty funkce za imageCreateTrueColor(); imagecopyresampled();

Avatar

Autor komentáře: SaLIk

Datum vložení: 22.10.2006 22:36:35

diky mistre..tohle sem potreboval :)

Avatar

Autor komentáře: Martin

Datum vložení: 27.5.2008 20:28:22

Za ktere funkce prosivás moc a moc. Martin

Avatar

Autor komentáře: Unknown86

Datum vložení: 26.11.2005 12:06:13

Článek je to hezký. Já jsem to ale také nedávno řešil a vymyslel jsem to trochu jinak. Pokud chci ve stránce zobrazit miniaturu nějakého obrázku, napíšu za jeho zdroj následující: <IMG Src="nahled.php?soubor=cesta_k_obrazku">, tím se spustí na serveru skript, který dělá toto: - Pokud ještě nebyla vytvořena miniatura obrázku, vytvoří ji a uloží do adresáře s miniaturami a poté odešle vygenerovaný obrázek. - Pokud již byla vytvořena, přesměruje pomocí hlavičky na již vytvořený soubor. Tento postup zatěžuje server minimálně(d8 se říci že téměr stejně jako byste se odkazovali na již hotové miniatury) a odpadají vaše další úkony, jako je zadávání cesty k obrázku, který chcete zmenšit atd. Můžete si i nastavit hraniční čtverec kolem obrázku, do kterého se obrázek zmenší v poměru. Napsal jsem o tom i článek, ale nevím, jestli je slušné psát pod jiný článek reklamu na něj. Kdybyste tu adresupřece jenom chtěli, napište kdyžtak na unknown86@mrkev.net. Tak to je vše, co jsem chtěl říci.

Avatar

Autor komentáře: Unknown86

Datum vložení: 26.11.2005 12:09:56

Teď koukam na ostatní komentáře a na něco jsem přišel, moje řešení zatím pracuje jenom s formátem JPG, ale myslím, že vyřešit to, není žádný problém...

Avatar

Autor komentáře: peta

Datum vložení: 6.3.2006 8:08:23

http://www.boutell.com/gd/ GDcko ma gif, opravte si poznamku dole datovanou na 31. 5. 2001

Avatar

Autor komentáře: header

Datum vložení: 23.9.2006 23:52:28

///Get image info $image_size=getimagesize($file);//which image shall i test for w/h and mime type ///Get image if($image_size['mime']=='image/jpeg'){$im_in=imagecreatefromjpeg($file);} if($image_size['mime']=='image/gif'){$im_in=imagecreatefromgif($file);} if($image_size['mime']=='image/png'){$im_in=imagecreatefrompng($file);}

Avatar

Autor komentáře: F.O.X

Datum vložení: 29.11.2007 22:40:07

Promiňte že spamuji, ale autorovi patří velký dík, fotky jsou pořádně kvalitní. Tenhle skript nemá chybu.:-)

Avatar

Autor komentáře: Honza

Datum vložení: 25.3.2008 9:10:01

Dobrtý den, mám na Vás prozbicku, s PHP začínám a skouším tento skript, funguje mi akorát neví jak mám vyplnit formulář na zmenšení obrázků jestli je potřeba vypisovat plnou cestu k souboru či jak je to potřeba zadat a popřípadě jestli je možné zaměnit ve formuláři typ pole z TEXT na FILE diky za pomoc. Honza

Avatar

Autor komentáře: Desaster

Datum vložení: 11.2.2009 5:47:44

Jsem novacek a nevim jak zkompilovat GD na Windows XP muze mi nekdo prosim poskytnout navod??

Zpět na článek | Úvodní stránka Interval.cz