Funkce na zmenseni obrazku – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Funkce na zmenseni obrazku – PHP – Fórum – Programujte.comFunkce na zmenseni obrazku – PHP – Fórum – Programujte.com

 

desik
~ Anonymní uživatel
2 příspěvky
24. 2. 2009   #1
-
0
-

Potřeboval bych poradit od zkušenějších, jak vyřešit jednu zapeklitost. Mám funkci na zmenšení obrázku, bohužel funguje jen při obrázcích "naležato". Fotku na výšku zdeformuje :(



function img_resize($photo_name, $from, $max, $to) {
$ext = strtolower(end(explode('.',$photo_name)));
if ($ext == 'jpg' || $ext == 'jpeg') {
$im = imagecreatefromjpeg($from);
} else if ($ext == 'gif') {
$im = imagecreatefromgif($from);
} else if ($ext == 'png') {
$im = imagecreatefrompng($from);
} else {
return false;
}
$sx = imagesx($im);
$sy = imagesy($im);
$nx = $sx;
$ny = $sy;
if ($nx > $max) {
$nx = $max;
$ny = max(1, round($ny * ($nx / $sx)));
}
if ($ny > $max) {
$ny = $max;
$nx = max(1, round($nx * ($ny / $sy)));
}
$nm = imagecreatetruecolor($nx, $ny);
imagealphablending ($nm, false);
imagecopyresampled ($nm, $im, 0, 0, 0, 0, $nx, $ny, $sx, $sy);
if ($ext == 'jpg' || $ext == 'jpeg') {
imagejpeg ($nm, $to);
} else if ($ext == 'gif') {
//imagegif ($nm, $to);
imagejpeg ($nm, $to);
} else if ($ext == 'png') {
//imagesavealpha ($nm, true);
//imagepng ($nm, $to);
imagejpeg ($nm, $to);
} else {
echo"chyba při vytváření náhledu";
return false;
}

}


díky moc za rady,

desik

Nahlásit jako SPAM
IP: 213.191.111.–
MiMi
~ Anonymní uživatel
45 příspěvků
24. 2. 2009   #2
-
0
-

zisti pomocou rozmerov fotky, či je šírka menšia alebo väčšia ako výška fotky a ak bude menšia tak to zmenšíš v opačnom pomere ako keď bude šírka väčšia

Nahlásit jako SPAM
IP: 217.145.198.–
desik
~ Anonymní uživatel
2 příspěvky
25. 2. 2009   #3
-
0
-

ano ano:), to je logické. Není ani tak problém zjistit, jestli je fotka na výšku/šířku. Hlavní je tedy asi jak by toto mělo vypadat pro fotku na výšku a zde bych potřeboval konkrétnější radu:)

if ($nx > $max) { 

$nx = $max;
$ny = max(1, round($ny * ($nx / $sx)));
}
if ($ny > $max) {
$ny = $max;
$nx = max(1, round($nx * ($ny / $sy)));
}

Nahlásit jako SPAM
IP: 213.191.120.–
Petr
~ Anonymní uživatel
746 příspěvků
1. 3. 2009   #4
-
0
-

Můžeš se taky podívat do téhle free galerie, tam je vyřešeno jak generování do čtverce tak normální zmenšování se zachováním poměru stran...

http://www.jkcz.info/freegal/2008/

Nahlásit jako SPAM
IP: 89.102.231.–
marioff0
Expert
2. 3. 2009   #5
-
0
-

nikdy never uzivatelovmu vstupu !! mime typ zistuj pomocou getimagesize() http://sk.php.net/manual/en/function.getimagesize.php

$maxsirka = 120;

$maxvyska = 90;

// $realnasirka = 600; $realnavyska = 400; // velkost uploadnuteho obrazku... (ziskane napr. z getimage)

$pomer = $maxsirka / $maxvyska;

if (($realnasirka / $pomer)>=$realnavyska) {

$thumb_sirka = $maxsirka;
$thumb_vyska = round($realnavyska / ($realnasirka / $maxsirka), 0);

} else {

$thumb_sirka = round($realnasirka / ($realnavyska / $maxvyska), 0);
$thumb_vyska = $maxvyska;

}
// $thumb_sirka $thumb_vyska - vysledne velkosti


napisal som to z (hladneho) brucha..a netestoval som... ale podla mojho svedomia by to malo dokonale slapat..

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Zmenšení obrázku — založil Petr

Zmenšení obrázku — založil Matej Zabsky

C# - Zmenšení čísla — založil BDS

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý