Autor Zpráva
vazo
Profil
Ahoj,
chtěl bych vás poprosit o pomoc... Mám zde fungující scripty pro hromadné nahrávání fotek na server (fotky jsou ještě před nahráním zmenšeny na maximální šířku či výšku 400 px) a potřeboval bych, aby se při nahrávání do vytvářené složky ./images/foto-mini/ nahrály nahrávané fotky ještě jednou ale zmenšené na zhruba 120 x 90 px. Ale bohužel si s tím nevím nějak rady... :-/ Mohli by jste mi s tím prosím nějak poradit? Btw výchozí stránka je multiple.php.
Předem moc děkuji.
vazo
Profil
Poraďte prosím někdo. Jde mi o to, aby se při jednom nahrání nahrály fotky zmenšené na max 400 px jednak do složky ./images/foto/. Toto funguje správně. Ale potřeboval bych aby, se také při tom samém nahrání uložily ty samé ale zmenšené fotky na velikost 120 x 90 px do adresáře ./images/foto-mini/. A s tím si nevím rady.
Alphard
Profil
Nevidím důvod dávat dotaz do sekce JS. I když u klienta jde zmenšit obrázek, přece ho nebudete nahrávat 2x. Využijte PHP, zmenšete a uložte obrázek na serveru Zmenšování obrázků.
vazo
Profil
Díky za reakci... Fotky chci nahrávat 2x jelikož jedna (ta menší) bude sloužit podklad - miniatura (měl by se tím ušetřit čas uživateli, který je potřebný pro nahrávání celé stránky-fotogalerie se všemi fotkami). Ta větší fotka bude sloužit jako detailní foto a zobrazí se až po kliknutí na vybranou miniaturu. Jestli to jde vyřešit jinak, tak se rád nechám poučit. Zkoušel jsem využít jen a pouze PHP pro nahrávání a zmenšování fotek, ale při větším objemu fotek (potřebuji totiž nahrávat více fotek najednou) většina scriptů přestala pracovat, proto jsem začal hledat řešení u javascriptu, ajaxu a jquery, ty dokáží zmenšit nahrávané fotky na straně klienta.
Chamurappi
Profil
Reaguji na vaza:
Zmenšení v prohlížeči před uploadem je jen třešinka na dortu, na kterou nejde spoléhat, protože uživatel může mít starší prohlížeč, který přímý přístup k nahrávaným souborům nepodporuje. Pokud potřebuješ nahrát i velkou variantu fotky, nemá cenu dělat podobné taškařice na straně klienta.
vazo
Profil
Dříve jsem fotky nahrával na server ručně, proto se snažím dát do kupy nějaký script, který by toto nahrávání ulehčil a já mohl tuto činnost přenechat jednomu konkrétnímu uživateli (tzn. že bych samozřejmě zkontroloval, zdali má nejnovější verzi prohlížeče a případně mu jí nainstaloval). Jen pro upřesnění každou fotku potřebuji zmenšit a uložit dvakrát. Myslel jsem, že se právě přechází na úpravu (zmenšování) fotek na straně klienta proto, aby se zmenšilo zatížení spojení se serverem. Nebo tomu tak není? Btw zkoušel jsem dříve jeden php script, který fotku nahrál na server a zmenšil, ale když jsem vybral více fotek, které měly větší rozlišení, tak script většinou skončil chybou (došlo k vypršení časového spojení). To je důvod, proč se snažím najít řešení, které by upravovalo velikost fotek na straně klienta.
_es
Profil
vazo:
aby se zmenšilo zatížení spojení se serverem.
To „zaťaženie spojenia“ zmenšíš tak, že namiesto jedného „spojenia“ na jednu fotku budú spojenia dve?

zkoušel jsem dříve jeden php script, který fotku nahrál na server a zmenšil, ale když jsem vybral více fotek, které měly větší rozlišení, tak script většinou skončil chybou (došlo k vypršení časového spojení).
Tak to je buď dôvod ten skript upraviť, zmeniť konfiguráciu servera, použiť iný skript...

Nemáš istotu, akým algoritmom prehliadače v JS fotky zmenšia - v rôznych prehliadačoch môže byť rôzny výstup.
vazo
Profil
Jak to ale udělat, když potřebuji jednu fotku zmenšit dvakrát? (Např. chci nahrávat několik fotek, které mají různá rozlišení, nejprve upravím všechny fotky na shodnou velikost - např. 800 x 600 px a nahraji na server a potom všechny tyto fotky zmenším znova na 120 x 90 px a nahraju na server do jiného adresáře - získám tím miniatury fotek, které budou základem stránky fotogalerie => rychlejší načítání stránky fotogalerie). Toto bude stejné i když použiji PHP a nebo JS. PHP funkce na zmenšení fotek jsou náročné na paměť serveru a proto mi přijde podle selského rozumu lepší využít JS a využít tak paměť na straně klienta na zmenšení fotek. Nebo v čem tkví výhody použití PHP před JS?
okolojsoucí
Profil
Zajímavé že jsem si udělal pomocí knihovny Imagick vlastní zmenšovák kvůli fotogalerii. A funguje to tak že přes Ajax se natáhnou všechny fotky do nějakého tempu a následně pomocí glob() si vytáhnu každou fotku kterou nejdříve zmenším a pak jí uložím, a původní jen zkopíruji pomocí copy a takto to funguje dokud se nezmenší všechny.
Nejvíce jsem jich nahrál 120 fotek, a během 10 minut bylo vše v pohodě zmenšené. Podotýkám že webhosting mám u Wedosu. Tak že si myslím že až tak nereálné to není.
Chtěl bych to nějak udělat asynchroně aby již nahrané se zmenšovaly a nečekaly na kompletní nahrání ostatních.
juriad
Profil
Většinou není problém s místem na serveru. Jestli budou mít fotky všech produktů 5 GB nebo 50 GB, je v vcelku jedno.
Kdybych tvořil eshop; ukládal bych všechny do adresáře photos/orig/ v původním rozlišení.
Jakmile bude nějaký klient chtít fotku nějakého produktu a nebudu ji mít ještě zmenšenou na správnou velikost, vygeneruju mu ji ve správném rozlišení a uložím si ji.

Výhodou je to, že zmenšeniny fungují jako cache; jakmile změníš design eshopu a budeš potřebovat jiné velikosti fotek, tak ony se ti samy vytvoří. Rozložíš tímto generování miniator do delšího časového úseku; první klient prostě bude trochu trpět, produkt se mu zobrazí o pár sekund pomaleji než později.

Řešit to lze pomocí .htaccess; ten může mít strukturu:
pro adresu /photos/(\d+x\d)/(.*\.jpg)
pokud existuje takový soubor, okamžitě ho poskytni (tím obejde PHP a sníží zátěž)
pokud neexistuje, přepiš adresu na photo.php?size=$1&name=$2

v photo.php zkontroluješ, zda existuje adresář /photos/$size (například s názvem 800x600), tím zajistíš, že se nebudou generovat fotky náhodných velikostí.
dále zkontroluješ, zda existuje fotka /photos/orig/$name
pokud neexistují, chyba 404

pokud zmenšená fotka neexistuje:
  zkus vytvořit zámek třeba pomocí tvorby adresáře mkdir, nebo flock.
  pokud se zámek povedl:
    zmenši ji z originální fotky a ulož do /photos/$size/
    odstraň zámek
  jinak již někdo fotku generuje:
    počkej na odstranění zámku
  přesměruj se na sebe samého (pomocí header)
pokud jíž zmenšená fotka existuje:
  pokud existuje zámek (pravě se zmenšenina fotky zapisuje):
    počkej na odstranění zámku
    přesměruj se na sebe samého (pomocí header)
  jinak
    fotka měla být poskytnuta pomocí .htaccess -> chyba   

S touto úlohou nemám praktickou zkušenost, ale takto bych to řešil.
vazo
Profil
Díky za tvůj příspěvek, je zajímavý! Jen mi možná přijde o chlup lepší, když trochu "trpí" administrátor při nahrávání fotek než samotný "uživatel". Jen pro upřesnění o eshop se nejedná.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: