Autor Zpráva
Akali
Profil
Ahoj. Jak změnít velikost obrázku v PHP tak, aby se netransformoval?
Lze nějak nastavit maximální výšku a podle toho by se nějak dopočítala i šířka. Popřípadě jak nastavit maximální povolenou šířku a výšku?
Děkuji.
Rellik
Profil
Jde to zhruba tak (thumb.php) Případně koukni sem http://cz.php.net/manual/en/imagick.resizeimage.php
Akali
Profil
Myslel jsem upravu obrazku pri zobrazeni. Ne při nahrávání.
Mám totiž div o velikosti 200px na 200px a do něj nějak potřebuju vložit nezdeformovaný obrázek.

Takže když mám obrázek 400px na 200px tak bych ho potřeboval zobrazit 200px na 100px. Prostě aby se výška upravovala ve stejném poměru jako šířka
Joker
Profil
Akali:
Prostě aby se výška upravovala ve stejném poměru jako šířka
Tak rozměr delší strany zmenšeného obrázku je daný (maximální velikost, tj. v našem příkladu těch 200px) a kratší rozměr se spočítá jednoduše:
kratší rozměr zmenšeného = maximální velikost * (kratší rozměr původního / delší rozměr původního)
kratší rozměr původního dělený delším rozměrem původního je poměr stran
Rellik
Profil
Akali:
Myslel jsem upravu obrazku pri zobrazeni. Ne při nahrávání.
A tak mi teda ukaž kde sem ti napsal něco o nahrávání? ;)
Kdyby se pořádně podíval na co odkazuju tak už to máš hotové...
thumb.php:
<?php
$filename = $_GET['obrazek']; // obrázek načtený z parametru - viz níž

$width = 200; // maximální šířka
$height = 200; // maximální výška

header('Content-Type: image/jpeg'); // hlavička souboru

list($width_orig, $height_orig) = getimagesize($filename); // získání rozměrů obrázku

// přepočítání velikosti se zachováním poměrů
$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// zmenšení
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// zobrazení
imagejpeg($image_p, null, 100);
?>

Obrázek na webu pak budeš mít zapsaný jako:

<img src="thumb.php?obrazek=jmeno_obrazku_ktery_chces_zmensit.jpg" alt="Obrázek">

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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