Autor Zpráva
jirivo
Profil *
Potřeboval bych poradit jak zmenšit obrázek na určitou výšku, ale šířka aby zůstala konstantní, tedy automaticky se přizpůsobila. Mám výpis z databáze a u každého záznamu mám zobrazené logo, ale každé logo je jinak široké, takže dochází k deformaci obrázku. Existuje nějaké řešení jak zachovat šířku obrázku ?
Str4wberry
Profil
Nastavit jenom výšku.
Mesiah
Profil
// podle:
// http://blog.jakubmaly.cz/programovani/php/thumbnaily-v-php.aspx
// mé úpravy:
// * Konstantní velikost výsledného obrázku obrázku (původně proporzionální)
// * Zmenšený obrázek centruju do výsledného obrázku
// * Pozadí nastavuji na bílou barvu
function Resize(
   $filename, //cesta k souboru, ktery chcete zmensit
   $copypath, //cesta, kam zmenseny soubor ulozit
   $MaxWidth, //maximalni sirka zmenseneho obrazku
   $MaxHeight) //maximalni vyska zmenseneho obrazku
{
  //zjistime puvodni velikost obrazku 
  list($OrigWidth, $OrigHeight) = getimagesize($filename);
  //hodnota 0 v parametrech MaxWidth resp. MaxHeight znamena,
  //ze sirka resp. vyska vysledku muze byt libovolna 
  if ($MaxWidth == 0) $MaxWidth = $OrigWidth;
  if ($MaxHeight == 0) $MaxHeight = $OrigHeight;
  //nyni vypocitam pomer zmenseni
  $pw = $OrigWidth / $MaxWidth;
  $ph = $OrigHeight / $MaxHeight;
  if ($pw > $ph)
    $p = $pw;
  else
    $p = $ph;
  if ($p < 1) $p = 1;
  //v p ted mame pomer pro zmenseni
  //vypocitame vysku a sirku zmenseneho obrazku
  $NewWidth = (int)$OrigWidth / $p;
  $NewHeight = (int)$OrigHeight / $p;
  //vytvorime novy obrazek pozadovane vysky a sirky
  //$image_p = imagecreatetruecolor($NewWidth, $NewHeight);
  $image_p = imagecreatetruecolor(100, 90);
  //nastavim pozadi noveho brazku na bílou barvu
  $white = imagecolorallocate($image_p, 255, 255, 255);
  imagefill($image_p, 0, 0, $white);
  //otevreme puvodni obrazek ze souboru
  $image = imagecreatefromjpeg($filename);
  //jeste nastavim body, kam se ma obrazek posunout
  $NewPointX = 50 - ( $NewWidth / 2 );
  $NewPointY = 45 - ( $NewHeight / 2 );
  //a okopirujeme zmenseny puvodni obrazek do noveho
  imagecopyresampled($image_p, $image, $NewPointX , $NewPointY, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight);
  //a ulozime
  imagejpeg($image_p, $copypath, 100);
} 

upravy zvladnes sam.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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