Diskuze: Komprese obrázků
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ušetříš pár megabajtů, ale bez větší optimalizace (cachování)
budeš muset pro každý request ten stejný obrázek
komprimovat znovu a znovu. To je zbytečné a zdegraduješ už tak pomalé PHP.
Pokud používáš cache, tak sice nebude komprimovat pokaždé, ale zase ti to
zabere ty MB 
Já být tebou to ukládám do databáze nebo někam do složky a jednou za čas
bych to projel CRONem a promazal to.
Obrázky jsou uloženy na serveru, udaje k němu v dtb. Nicméně mě jde o to, že se načítají až moc zmenšené obrázky pomocí CSS, což PageSpeedu vadí. Radí mi kompresi, jde to teda provést nějak efektivně?
Promazávat žádné obrázky nikdy nechci, články nejsou na bázi zpráv ale článků, které mohou lidi využít dnes nebo klidně za deset let, obrázek k tomu proto chci zachovat.
Jak jsem řekl. Budeš mít obrázky uloženy stejně, jako je tomu teď.
Plus si pro obrázky na homepage vytvoříš separátní složku nebo sloupec v
databázi, kde budeš mít komprimované verze obrázků. Předpokládám, že
se obrázky na homepage nebudou vyskytovat moc dlouho, takže by bylo dobré
tuto složku (se zmenšenými obrázky) jednou za čas promáznout.
Příjde mi to jako nejefektivnější řešení.
Jak radí patrik.valkovic, také bych to řešil stejným způsobem. Přijde mi hloupost v tomto případě provádět opakovanou kompresy při každém requestu.
Zachoval bych obrázek v originální velikosti a vytvořil k tomu náhled, který se zmenší a provedl bych zároveň i kompresy a tím se dostaneš na několik desítek KB.
Tak jsem si na to po delší době sedl, ale nedaří se :/
Rovnou ukážu asi kod. Na MVC architektuře v kontroleru se už dostanu na uložení obrázku, tak rovnou tam přidám i onu kompresi:
if(move_uploaded_file($_FILES['file']['tmp_name'], $dir)){
$this->compress_image($_FILES['file'],$_FILES['file']['tmp_name'], $dir.'.jpg', 65);
funkce je potom v kontroleru, ze kterého dědí ten, který zpracovává obrázky. Funkce komprese (několikrát zminovaná ruzně na netu)
public function compress_image($info,$source_url, $destination_url, $quality) {
if ($info['type'] == 'image/jpeg')
$image = imagecreatefromjpeg($source_url);
elseif ($info['type'] == 'image/gif')
$image = imagecreatefromgif($source_url);
elseif ($info['type'] == 'image/png')
$image = imagecreatefrompng($source_url);
imagejpeg($image, $destination_url, $quality);
return $destination_url;
}
Když to odešlu, obrázek původní se sice uloží, komprimovaný (který by se jmenoval obrazek.jpg.jpg) ale už nikoliv. Předtím vyhodí PHP chybové hlášení, po jehož refreshi se vrátím zpět do adminu. Hláška je taková:
Warning: imagecreatefromjpeg(/data/web/virtuals/136924/virtual/tmp/phpspj4lh): failed to open stream: No such file or directory in /data/web/virtuals/136924/virtual/www/subdom/admin/kontrolery/Kontroler.php on line 129
Warning: imagejpeg() expects parameter 1 to be resource, boolean given in /data/web/virtuals/136924/virtual/www/subdom/admin/kontrolery/Kontroler.php on line 137
Nějaké rady, prosím? Fakt nevím, co dělám špatně. Ta funkce na internetu je odsud http://blog.clonesinfo.com/…ng-php-code/
Předem díky!
Zobrazeno 6 zpráv z 6.
