Starší komentáře ke článku: Náhľady k obrázkom generované v PHP
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 5.3.2004 1:08:00
Zdravim, treba si vsak uvedomit, ze ak mame na webe vacsi pocet obrazkov, ktore sa takymto sposobom upravuju, a ak mame web s vacsou navstevnostou, tak moze tento sposob vies k dost vysokemu zatazeniu servera. Zoberte si cas, ktory potrebuje napr Gimp, Photoshop ci Photopaint na resize obrazku, vynasobte poctom obrazkov, navstevnikov a dostane velke cisla. Podla mna je vyhodnejsie, ak tento scriopt dopnite o to, ze sa vzniknuty subor ulozi na disk a ten sa zobrazuje.
Datum vložení: 5.3.2004 1:44:04
mluvite mi z duse - pokud skript nedoplnite o kešování, je to pro server smrt.
A jeste jedna pripominka - obrazek by se mel po resamplovani zcela jiste doostrit. Resamplovani totiz uz ze sveho principu obrazek rozmaze. (nevim, jestli PHP ostrit umi).
Dale je tu velikost souboru - truecolor PNG byvaji docela objemne, u JPG je zase treba najit spravne optimum pro kompresni pomer.
Proto si myslim, ze (pokud to lze) na tvorbu kvalitnich nahledu je lepsi vyuzit graficky editor, nez podobny skript. Ale jak rikam, pokud to lze - existuji urcite spousta pripadu, kdy takovyto skript je jedinne reseni.
Datum vložení: 5.3.2004 11:32:54
tohle je lamerina... gd funkce na to vubec nejsou stavene. jedine imagemagick, cachovani, provadeni na dedikovanem serveru pripadne ve vhodnou hodinu s malou navstevnosti
ale proc radit na lamerzinu interval - tady clanky nepisou odbornici ale chudaci, kteri tomu vubec nerozumi ale pekne si to nastudovali, ze ano pane autore
Datum vložení: 5.3.2004 13:23:28
Pan lama,
1. Je pravda, ze takto je server zatazovany, ked musi stale generovat nahlad. Tento clanok mal sluzit ako priklad, ako generovat nahlady. Je az taky problem v admin rozhrani nejakej galerie, kde pridavate fotku opravit tento script vo funkcii imagejpeg() na imagejpeg($subor) a potom ten nazov suboru ulozit do databazy? Myslim, ze to az taky problem nie je.
2. Kedze kniznica gd nie je ziaden kvalitny obrazkovy editor ako napr. Photoshop neviem ako chcete zabezpecit rovnaku kvalitu generovanych obrazkov.
3. Ked chcete mat vysoku kvalitu negenerujte nahlady pomocou gd, ale v nejakom editore, avsak som zvedavy ako dlho by Vam trvalo keby ste mali galerie s tisickou fotiek a vy by ste sa rozhodli, ze nahlady chcete trouchu zvacsit, alebo zmansit. Zase by ste museli siahnut po nejakom editore a jeden za druhym menit velkost.
4. Ak ste taky odbornik a my autori sme len taki podla Vas chudaci, podelte sa s nami o Vase bohate skusenosti.
PS.: Som zvedavy, preco vlastne citate clanky na Intervale, ked viete, ze ich pisu chudaci, ha???
Autor
Datum vložení: 5.3.2004 13:27:52
Ospravedlnujem sa za preklep v predchadzajucom prispevku. Vo fukcii imagejpeg ma ako prvy parameter resource obrazku.
Datum vložení: 5.3.2004 13:38:03
ad 3) to preci neni zadny problem, programy jako Adobe Photoshop maji preci davkove zpracovani, tzn. nahrajete prislusnou akci a pote aplikujete treba na tisice souboru. Druha vec je poradit si s obrazky na sirku, vysku ...
Datum vložení: 5.3.2004 14:31:49
Nevim jak Photoshop, ale treba Corel Photopaint ma krome davkoveho zpracovani i vlastni skiptovani, takze i ruzna velikost obrazku se da osetrit. Kazdpadne delat nahledy na serveru jen proto, ze jsem ted objevil novou hracku (PHP to taky umi) je nesmysl. Druh vec je pripad, kdy obrazky na server nahravaji nezkuseni uzivatele, a PHP z toho musi udelat nahledy. Samozrejme jen jednou pri uploadu, ne pokazdy kdyz se stranka s galerii vyzada prohlizecem. Leo
Datum vložení: 6.3.2004 21:00:46
Jenze to davkove zpracovani je vam k nicemu prave proto ze je davkove. Davkove vam to php s gd2 muze vyresit uplne stejne a vysledek je dostatecne kvalitni - pochopitelne to musite na disk ukladat protoze ta operace zabia celkem dost zdrojoveho casu. Pokud ale chcete urcitou kvalitu a chcete ty soubory mit pokud mozno co nejmensi tak si proste musite hrat s kazdym rucne - at uz s pomoci gd2 knihoven nebo v jakemkoli editoru.
Datum vložení: 8.3.2004 9:01:54
A pokud akce a davkovani nestaci, tak PS poskytuje velmi solidni api a clovek si to muze naprogramovat skoro v cemkoli.
Datum vložení: 8.3.2004 0:14:34
Nahledy, se nemusi pouzit pouze u davkoveho zpracovani vice obrazku, ale dobre jsou kdyz chcete, aby uploadovany obr. od uzivatele, nepresahl urcitou velikost a nerozhodil design webu.
Datum vložení: 8.3.2004 9:04:54
jen mi nejak nefunguje presamplovani GIFu ... cimpak to ? mam snad starou GD ?
PHP Version 4.2.2
Datum vložení: 8.3.2004 10:09:14
Gif umi jen 256 barev takze pokud pred tim resamplovanim vytvarite obrazek pomoci imagecreatetruecolor() tak se neni cemu divit ;)
Datum vložení: 8.3.2004 11:49:34
mam pocit, ze GD od urcite verze (nechce se mi to presne hledat) nepodporuje moc praci s GIFem (kvuli licenci) ...
Datum vložení: 9.3.2004 8:07:28
jen pocit, patent vyprsel pred pul rokem. Podpora samozrejme v knihovnach je.
Datum vložení: 9.3.2004 8:21:20
Malé upřesnění - sporný patent se netýkal formátu GIF jako takového, ale použitého komprimačního algoritmu LZW, a zhruba před půl rokem sice vypršel, ovšem pouze v některých zemích (a někde, například v Austrálii, nebyl přihlášen nikdy). GD podporuje GIF v tom směru, že jej umí načíst, nikoli však vytvořit, k tomu je zapotřebí speciální patch, který je sice nelegální, lze jej však de facto legálně aplikovat tam, kde patent na LZW už neplatí. Já osobně mám za to, že bychom měli GIF nechat ležet tam, kde padl, a už se pro něj nevracet ;-)
Datum vložení: 9.3.2004 11:33:46
No... to je vlastne pravda. Budu si to pamatovat.
Datum vložení: 5.3.2004 21:43:07
Autor není moc originální - stačí zalistovat archivem článků o PHP a najde tam vytváření galerie, včetně resize, uložení do souboru, ...
Tady je odkaz na druhý díl: <a href='http://interval.cz/clanek.asp?article=648' target='_blank'>http://interval.cz/clanek.asp?article=648</a>
Pokud je nutné připomenout novým čtenářům starší článek, stačí průběžně zveřejňovat odkazy do archivu :-)
Datum vložení: 5.3.2004 21:58:34
Nesplnil jste si domácí úkoly - vytváření náhledů je součástí několika seriálů. Jenže právě na to si lidé často stěžovali, protože skript bylo nutno používat v kontextu aplikace a těžko se v něm orientovali. Proto jsem souhlasil s návrhem pana Hoffmanna na maximálně zjednodušený a nezávislý skript podle nejnovější normy a článek o něm ;-)
Datum vložení: 5.3.2004 22:13:52
O stížnostech lidí nemůžu polemizovat (nemám info). Ale pokud někdo, kdo si říká programátor, hledá jenom funkci, která za něj něco vyřeší, ...
Programátor by podle mě měl vědět, co se mu v programu děje. Jestli je pro někoho složité přečíst cizí kus programu a pochopit ho, pak je to s ním těžké. Ale to bych se dostal k cílové skupině intervalu.
Musím ale přiznat, že v začátcích mi interval hodně pomohl (právě tím, že jsem zkoumal cizí příklady nejen tady a přemýšlel, proč zrovna takhle a ne jinak), teď už sem jen občas juknu, jestli se objevilo nějaké zajímavé téma. Proto mě překvapuje, když čtu znovu o něčem, co už tady (několikrát) bylo.
Datum vložení: 5.3.2004 22:54:50
No já skript na generování náhledových galerií mám a používám na localhostu. Když chci přidat galerii na stránky tak prostě nasypu fotky do předem připraveného adresáře a stisknu tlačítko. Skript se mě ještě zeptá pomocí formuláře na popisky a autory fotek atd... a potom vygeneruje nové stránky s náhledy. Já je jenom pak vezmu a uplouduju na server. Je to tak prostě rychlejší, než pomocí editoru.
Souhlasím s tím, že v grafických editorech dosáhnete lepší kvality. Já ale soudím, že náhled žádnou závratnou kvalitu nepotřebuje jde jen o to ukázat co je na obrázku.
Datum vložení: 5.3.2004 23:32:27
Vygenerovat stranku i s nahledy muzete ruzne. Ovsem pak nechapu, kdyz se webmastri pytlikuji s dosazenim co nejlepsiho designu a pak velkou cast stranky (nahledy) nechaji "skarede" :-).
Delat to doma na localhostu pres php (jestli jsem dobre pochopil) a pak to nekam tlacit, mi pripadne nesikovne a nevim v cem je to rychlejsi.
Datum vložení: 5.3.2004 23:44:52
Rychlejší je to v tom, že vytvořím novou stránku i upravím obrázky naráz. V opačném případě bych to musel dělat zvlášť. To snad není až tak nepochopitelné.
zas až tak škaredé ty náhledy nejsou ( <a href='http://avar.borec.cz/galerie/gal.php' target='_blank'>http://avar.borec.cz/galerie/gal.php</a> ) alespoň mě to tak přijde.
Datum vložení: 6.3.2004 0:44:35
Jsou strasne zubaty... Leo
Datum vložení: 6.3.2004 19:30:42
To ovsem neni problem php - nahledy vytvarene pomoci gd2 mame treba na <a href='http://www.ceskedny.cz/galerie.php' target='_blank'>http://www.ceskedny.cz/galerie.php</a> (a mimochodem kdyz se podivate na detail tak ten je resamplovany uplne stejne) a rozhodne mi zubate neprijdou. Kdyz nekdo pouziva gd 1, obrazky zpracuje v 256 barvach a nasledne pouzije resize pak se nemuze divit.
Datum vložení: 6.3.2004 19:58:48
Souhlas, vase jsou v prvotridni kvalite, komentoval jsem jenom ten konkretni pripad. Leo
Datum vložení: 6.3.2004 12:59:27
Souhlasím s Leem, ale jak jsem řekl - jsou to jenom náhledy. Výhoda dělání obrázku pomocí PHP je také v tom, že můžete vytvořit redakční systém a galerie může tvořit i někdo, kdo psaní stránek vůbec nerozumí - prostě uživatel. Já jsem to tak chtěl udělat, ale narazil jsem na zásadní problém. Když vytvořím náhled na serveru (zkoušel jsem i zde uvedený skript) náhled je někdy celý tmavý, nebo barevně velice "chudý". Zkoušel jsem na webzdarma.cz na localhostu mi to nedělá. Nevíte někdo kde je problém? Děje se to jenom u některých obrázků.
Datum vložení: 6.3.2004 16:29:34
Rozdil GD a GD2 - imagecreate vs imagecreatetruecolor a imagecopyresized vs imagecopyresampled... (uff, uz aby to bylo standardne gd_* :D )
Datum vložení: 6.3.2004 16:46:37
Zkusil jsem si to porovnat, <a href='http://www.teosoft.cz/tmp/thumbnails.gif' target='_blank'>http://www.teosoft.cz/tmp/thumbnails.gif</a>
je to sice videt dost, ale koneckoncu, v krajni nouzi, proc ne.
(fakt je, ze ani ty hlavni fotky v te stipove galerii nejsou imho nic moc,
prijdou mi strasne kontrastni).
Take jsem spachal jakousi php galerii a lide, kteri to pouzivaji, casto skemraji o to jednorazove generovani nahledu na serveru a ja jim to rozmlouvam :)
Radsi jsem se pustil do normalniho exe programku pro ta uplne zakladni
zpracovani amaterskych digi-fotek (nataceni, vyrezy, zaostreni, hromadne zmenseni a generovani nahledu a nasypani na web), fotak ma dneska kdekdo a ne kazdy s tim pak neco dalsiho umi. Ne kazdy ma ovsem take doma Photoshop ve kterem si levou zadni dela makra, ze :)
Takovych jednodussich programu je samozrejme hafo, treba Irfan je v
pohode a free, az na ty ne moc hezke galerie, ktere generuje.
Nahledy (nemyslim ty hnusy se sedivym okrajem ale normalni zmenseniny
cca 128x96) by v nem ale mel zvladnout temer kazdy, stejne na web
nebude strkat iks megove fotky a musi je take necim pozmensovat, tak to
vezme jednim vrzem. Davkove to Irfan umi take, ja tedy pouzivam ACDSee.
Zkusim se to ale stejne v tom php naucit :)
Datum vložení: 6.3.2004 16:50:52
hlavne tedy kdyz uz, aspon pouzivat resamplovani misto resizovani, jak podotkl Jan Brasna.
Datum vložení: 6.3.2004 18:07:22
Mate pravdu to resamplovani predelam. V clanku to tak je a funguje to lepe. Diky za radu.
Datum vložení: 7.3.2004 9:04:11
Chci poděkovat Hoffmanovi, Brašnovi a Teovi za radu ohledně GD2. Po příčině nekvalitních náhledů jsem se pídil dlouho, ale nikdo mi až doteď neporadil, že chyba je v používání GD1. Ppravil jsem tedy tvoření náhledu podle Erikova článku a výsledek mě potěšil. pokud si to někdo chce vyzkoušet, tak tady je link:
<a href='http://avar.borec.cz/test/formular.php' target='_blank'>http://avar.borec.cz/test/formular.php</a>
Zvolte si velikost delší strany a nahrajte na server obrázek. Funguje to pouze na .jpg (je to zatím pracovní příklad na ostatní formáty se v duchu článku chystám později). Mějte se fajn. Stip.
Datum vložení: 7.3.2004 9:59:55
To nebyl dobrý nápad, zveřejnit ten skript. Jestli nemáte ošetřeno mazání fotografií, asi Vám brzy dojde harddisk ;-)
Datum vložení: 7.3.2004 10:16:32
Dobrá připomínka už proto, že nejsem na velkou návštěvnost svých stránek moc zvyklý :) Mám to samozřejmě ošetřeno a to tím, že se obrázky sice nemažou ale přepisují. Nemůže jich tam být tedy více jak 5 (formulář má pět políček: obrazek0.jpg - obrazek4.jpg).
Spíše mám obavu aby mi nějaký koumák nezboural stránky - napsal jsem ten skript dost narychlo. Nicméně uploadovat soubor .php by to umožňovat nemělo :)
Datum vložení: 19.3.2004 6:15:40
Dobra prace, stipe! Vypada to, ze svuj predpotopni skepticky postoj ke generovani nahledu na serveru budu muset zasadne prehodnotit.
Ted jeste se to naucit... :)
Mne rozhodne neni zac dekovat, jen jsem opisoval od Jana Brasny a ostatnich, naopak ja dekuji Tobe za inspiraci a moznost overeni na Tve strance, tohle uz se fakt dost blizi kvalite z editoru... Safraprace, to si zase budu hrat misto seriozni prace :) Jestlipak to GD umi take jeste aspon trochu obrazek priostrit? Je to na vetsine serveru zapnute? (drive to samozrejmosti nebyvalo).
No nic, to si zjistim sam...
Datum vložení: 4.4.2004 17:34:19
Fatal error: Allowed memory size of 15728640 bytes exhausted (tried to allocate 9088 bytes) in /3w/borec.cz/a/avar/test/upload.php on line 16
...tak nevim
Datum vložení: 24.4.2004 12:40:32
To znamená, že obrázek byl moc velký. Na webzdarma je to omezené. Nedá se s tím z pozice uživatele nic dělat.
Datum vložení: 7.3.2004 22:31:51
Používám toto. Obrázek z formuláře si uložím do adresáře, např. pic a navíc do adresáře pic_small, se stejným jménem. Pak provedu:
system(escapeshellcmd("mogrify -geometry 30% -quality 75% ../pic_small/".$obr_name));
Těch 30% je zmenšení.
Tomáš
Datum vložení: 24.3.2004 11:25:59
Díky za článek. Pomohl mi. A co se týče kvality, náhledu....hehe o tom přece článek není.
PS: taky používám imagemagick, ale ted jsem narazil na server kde neni
Datum vložení: 26.3.2004 5:42:32
Take diky, take mi clanek a diskuse pomohly se v tom zorientovat.
Kvalita a moznosti generovani nahledu me ovsem zajimaji velmi,
takze jsem hledal jeste nejake zaostrovadlo (porad se mi totiz zmenseniny zdaji rozmazane) a anzto jsem ho nenasel, udelal jsem si vlastni. Funguje imho tak, jak jsem si predstavoval, viz. <a href='http://www.teosoft.cz/tmp/sharpener-example.gif' target='_blank'>http://www.teosoft.cz/tmp/sharpener-example.gif</a> (270kB),
akorat to mam zatim zoufale pomale, takze pro davkove zmensovani se jeste nejak musim poprat s omezenim doby behu skriptu nebo nejak vylepsit kod :)
Skript, ktery mi zmensi fotku a ulozi nahled, mi bezi tak sotva vterinku,
kdezto s tim zaostrenim skoro osm (fotka 480x640, nahled 144x192,
cim vetsi nahled, tim vic ma "zaostrovadlo" prace)
Kdyby mel nekdo zajem, rad se o vysledky sveho badani podelim :)
Datum vložení: 3.5.2004 8:00:58
Jak je to stim formatem tif? Pls poradite mi nekdo?
Datum vložení: 24.8.2004 17:56:46
tahle fce vytvori nahledy jenom jendou a testuje pri kazdem zavolani jestli uz jsou nebo nejsou nahledy....je to jednoduche a funkcni (pouze pro jpg.. me to staci :) ):
function UdelejNahled($path){
$velikost = 100; //nastaveni vetsi strany nahledu
$name=Explode("/",$path);//rozseka adresu souboru do pole
$pocet = count($name) - 1;//vrati velikost pole zmensene o 1 (velikost pole od 0 po 9 je 10...ale potrebuju 9!
$thumb_file=$this->CFG->nahledy ."/". $name[$pocet];//tvori adresu pro ulozeni
if (!File_Exists($thumb_file)){//zjisti jestli soubor uz existuje
$info=getimagesize($path);//velikost obrazku
if($info[0] > $info[1]){//zjistuje otoceni obrazku na sirku nebo vysku.....
$new_info[0] = $velikost;
$new_info[1] = ($velikost / 4)*3;//vytvori obrazek s pomerem stran 4/3
}else{
$new_info[0] = ($velikost / 4)*3;
$new_info[1] = $velikost;
}
$img=ImageCreateTrueColor($new_info[0],$new_info[1]);//vytvori TrueColor obrazek
$img_in=imagecreatefromjpeg($path);
//imagecopyresized(resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
imagecopyresized($img,$img_in,0,0,0,0,$new_info[0],$new_info[1],$info[0],$info[1]); //vytvori novy obrazek s novou velikosti
ImageJpeg($img,$thumb_file);//ulozi obrazek
}
return $thumb_file;//vrati adresu nahledu...
}
Datum vložení: 31.7.2005 13:03:59
function ErrorImage($string) { header ("Content-type: image/png"); $im = imagecreate (300, 50); $background_color = imagecolorallocate ($im, 200, 200, 200); $text_color = imagecolorallocate ($im, 233, 14, 91); imagestring ($im, 5, 5, 5, "ERROR: ".$string, $text_color); imagePNG ($im); exit(); } ErrorImage("funguj"); a vysledok ... ‰PNG IHDR,2ÜtiPLTEÈÈÈé[öI8¢IDAT8c<döÏ?ÿØÔ300>ñ˜q)ccæmKKl<<6 ¨ì0\NQÖÆÀÌ&]ðë0;N·=þùçp=?HÙ̾Ãx,}øáp ÿ1iÞ|Ê gNc™†_™dÏád°2žø^èfkÞ†tœÊØ?ó¶Ù$ö303ÞæùcŒKÔLÁØÆ@@üa°#FÙ(£< (Kõ+1CÛ½fIEND®B<R .... preeecoooo proosimm za radu :( som uz z toho zuufaly .. mozete aj na icq 327084510
Datum vložení: 5.10.2005 16:03:58
vie mi niekto poradit ako zmensit pomocou php animovane gify? Dolezite je aby boli aj po zmenseni animovane a nie staticke
Datum vložení: 24.11.2005 10:07:50
to pomocí php nejde. animovaný gif musíš otevřít v programu, který umí otevřt všechny obrázky, ze kterých je gif složený (ani PhotoShop to neumí, aspon ne verze 6.0) a pak musíš zmenšit všechny sekvence přímo tam. použij např. GifAnimator.
Datum vložení: 22.11.2006 16:47:57
Zaujimalo by ma, ci sa da nejako zabezpecit, ze ak je obrazok mensi ako zadane hodnoty vysky a sirky, aby zostala povodna velkost obrazku. Vdaka...