Autor Zpráva
WMPopi
Profil
Ahojte!
Brouzdám diskuzí a netem - hledám jak zmenšit velikost obrázku. Našel jsem spousty věcí ale všechno nějak složitě...
Představoval bych si to jednoduše:

fotku "foto1.jpg" různých rozměrů zmenšit na "thumb1.jpg" o velikosti 80x? (kde ? je dopočítaná velikost výšky = aby zvostal poměr stran)

Nevíte někdo, pls?
koudi
Profil
No a v čem máš problém? Knihovna gd2 a pár výpočtů...a hotovo.
WMPopi
Profil
no že jsem nenašel žádnej pořádně funkční, nemáš?
koudi
Profil
no že jsem nenašel žádnej pořádně funkční
Je jich dost.

nemáš
Mám, ale chci aby jsi se nad tím trošku zamyslel a ne jenom kopíroval, co ti kdo pošle.

rada: použij fuknce imagecreate, imagecreatefromjpeg, imagecopyresized, imagejpeg (v zásadě se dá skoro říct, že v tomto pořadí)
WMPopi
Profil
tady si myslím je pro mě dost nepotřebných věcí...

<?php


function image_shrink($file_in, $file_out, $max_x, $max_y = 0) {
$imagesize = getimagesize($file_in);
if ((!$max_x && !$max_y) || !$imagesize[0] || !$imagesize[1]) {
return false;
}
switch ($imagesize[2]) {
case 1: $img = imagecreatefromgif($file_in); break;
case 2: $img = imagecreatefromjpeg($file_in); break;
case 3: $img = imagecreatefrompng($file_in); break;
default: return false;
}
if (!$img) {
return false;
}
if ($max_x) {
$width = $max_x;
$height = round($imagesize[1] * $width / $imagesize[0]);
}
if ($max_y && (!$max_x || $height > $max_y)) {
$height = $max_y;
$width = round($imagesize[0] * $height / $imagesize[1]);
}
$img2 = imagecreatetruecolor($width, $height);
imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);
if ($imagesize[2] == 2) {
return imagejpeg($img2, $file_out);
} elseif ($imagesize[2] == 1 && function_exists("imagegif")) {
imagetruecolortopalette($img2, false, 256);
return imagegif($img2, $file_out);
} else {
return imagepng($img2, $file_out);
}
}

image_shrink("fotka1.jpg", "thumb1.jpg", 80, 0);

?>
WMPopi
Profil
tak tedy jsem dal na tebe, takhle nějak to vypadá, dobrý ne? ;-)

<?php 


// získání rozměrů původního obrázku
$rozmery = getimagesize ("foto_01.jpg");

// vypočítá poměr stran původního obrázku
$pomer = $rozmery[0]/$rozmery[1];

// načtení původního obrázku
$puvodni_obraz = imagecreatefromjpeg("foto_01.jpg");

// vytvoření nového true color (asi tak 16 milionů barev) obrázku se zadanou šířkou, výška se dopočítá
$novy_obraz = imagecreatetruecolor (80, 80/$pomer);

// kopírování původního obrázku do nového se zadanou šířkou
imagecopyresampled ($novy_obraz, $puvodni_obraz, 0, 0, 0, 0, 80, 80/$pomer, $rozmery[0], $rozmery[1]);

// odešle prohlížeči vygenerovaný obrázek.
imagejpeg ($novy_obraz, "thumb_01.jpg");

// Uvolní systémové prostředky.
imagedestroy ($novy_obraz);
imagedestroy ($puvodni_obraz);

?>
Honza Václavík
Profil *
mno me to pise:

Fatal error: Call to undefined function: imagecreatefromjpeg() in c:apachehtdocs\_ostimg_resizeost ovy1.php on line 19


19. radek:
$puvodni_obraz = imagecreatefromjpeg("1.jpg");

cim to je?
Davex
Profil
cim to je?
V souboru php.ini není povolen modul php_gd2
Meldo
Profil
WMPopi
Hlavne nezabudni na hostingu nastavit prislusne prava aby si mohol do adresara, kde budes ukladat fotky zapisovat (777). raz som na to zabudol a dost som si vytrpel...preto upozornujem. :-)
Gaudino
Profil *
tady je to super vysvetleno...funguje mi to podle toho v pohode....

je to treti prispevek

http://cz.php.net/manual/cs/function.imagejpeg.php
Toto téma je uzamčeno. Odpověď nelze zaslat.