Autor Zpráva
Milan1236000
Profil
Zdravím, pomocí funkce glob se v galerii zobrazují obrázky z různých složek. Nyní potřebuji zjistit velikost šířky a výšky, abych mohl nastavit určité rozměry při zobrazení obrázku v tagu img kvůli tomu, abych neroztahoval obrázek, který je "na výšku". Napadlo mě rozměry psát v %, ale to taky není úplně ideální, když je každý obrázek jinak velký.

Mám tam tento skript
foreach (glob("soubory/galerie/slozka/*.jpg") as $obrazek)
{
  $sirka=imagesx($obrazek);
  $vyska=imagesy($obrazek);
  if($sirka>$vyska) echo "<img src=\"" . $obrazek . "\" width=\"100px\" height=\"50px\">";
  else echo "<img src=\"" . $obrazek . "\" width=\"50px\" height=\"100px\">";
}
, ale zobrazují se chyby
imagesx() expects parameter 1 to be resource, string given in... a
imagesx() expects parameter 1 to be resource, string given in....
U toho zjišťování šířky a výšky nemůže být napsaná cesta k souboru? Jak tedy zjistit rozměry obrázku?
Smycma
Profil
Pokud chceš dodržet poměr stran tak stačí vybrat si atribut který má být u všech stejný a ten druhý se upraví sám a není potřeba zjišťovat velikosti
juriad
Profil
Viz 2. example na php.net/manual/en/function.getimagesize.php

Ale ty asi chceš něco jiného. Každopádně tato funkce ti vrátí jak šířku, tak výšku. Pak už je to jen otázka podmínek a aritmetiky.
Keeehi
Profil
$im = imagecreatefromjpeg($obrazek);
$sirka=imagesx($im);
$vyska=imagesy($im);
imagedestroy($im);

Smycma:

Milan1236000:
Napadlo mě rozměry psát v %, ale to taky není úplně ideální, když je každý obrázek jinak velký.
Jenže veikost v % se nepočítá ze skutečné velikosti obrázku, ale vzhledem k jeho rodiči. Tudíž když dáš nějakému obrázku width: 25%, vždy zabere jen čtvrtinu šířky a ve zbylých třech čtvrtinách bude předpokládám text. A vůbec nezáleží na tom, jak byl ten obrázek původně veliký.
Chamurappi
Profil
Reaguji na Milana1236000:
width=\"50px\" height=\"100px\"
Do atributů width a height se px nepíšou.


Reaguji na Keeehiho:
Jenže veikost v % se nepočítá ze skutečné velikosti obrázku, ale vzhledem k jeho rodiči.
Matně si vzpomínám, že kdysi bylo v plánu, že pokud se v CSS neuvedou u rozměrů jednotky, tak se bude jednat o násobek skutečné šířky/výšky – tudíž width: 0.25; by zmenšovalo na čtvrtinu. Nevím, v jakém stavu je ten plán teď, předpokládám, že to nikdy žádný prohlížeč nepodporoval.
Milan1236000
Profil
Díky všem moc za odpovědi, nakonec jsem použil getimagesize.

Chamurappi:
Máš pravdu, vše dělám na px, příp. %, takže jsem si to neuvědomil, ale i s napsanými px to funguje. Díky.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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