zmena velkosti obrazku

rad by som spravil galeriu do ktrorej by si uzivatelia mohli pridat sami fotografie. neviem vsak ako by som z tych fotografii spravil nahlady, pripadne obsekal ak by nejaka dobra dusa poslala 3000x9000 px a podobne malickosti.
nasiel som v manualoch nejake prikazy ale asi som ich nepochopil, lrbo to nejak nefungovalo.kazda rada cenna.
PS: som zaciatocnik
takže chceš skript, který udělá z velkého obrázku náhled, jestli rozumím správně, jo? Já mám asi podobnou galerii, jakou chceš na http://schody.koprivnice.org/oktava ... pokud je to ono, můžu ti dát zdroják toho zmenšování... ale náhledy obrázků o rozměru jak píšeš asi nebude tvořit příliš rychle.... však vyzkoušej u mě, taky tym mám v jedné složce docela velké obrázky a náhledy dělá celkem pomalu
Ja udelam nahled a ulozim ho. Pokud je fotka moc velka, taky ji zmensim. Myslim, ze generovat stejny nahled pri kazdem pozadavku je zbytecne. Moje foto album je http://remik.unas.cz/foto.php je jednoduche, ale staci, Na pozadani hodim sem zdrojak.
dik za reakcie, sorac ze pisem neskoro ale na nete niesom kazdy den...
skor by som chcel aby registrovany uzivatel mohol pridat foto do galerie, a z tychto fotiekby sa spravily nahlady a ulozily na disk kvoli rychlejsiemu nacitaniu. ale az by to neslo pouzijem to generovanie nahladov.
tie zdrojaky by ma potesily.
este raz dik
Já řeším fotogalerii tak, že při načtení fotografie od uživatele vytvoří 2 jpegy: malý náhled (120x80) a bežnou velikost (500x374). Obě mám uložené a na ně odkazuji ze stránek při prohlížení.

Přikládám skript, která zmenšuje jpegy. POZOR: proměnná $novynazevjpg odkazuje na jpeg, který zmenší, tj. nedělá kopii, tu si udělej předtím sám.

<?php
//
// Jpeg resample
//

//Nove rozmery <=== nastav si sam
$sirka = 120;
$vyska = 120;
$novynazevjpg = "adresar/ukazkovafotka.jpg";

// Originalni rozmery
list($sirka_orig, $vyska_orig) = getimagesize($novynazevjpg);
if ($sirka && ($sirka_orig < $vyska_orig))
$sirka = ($vyska / $vyska_orig) * $sirka_orig;
else
$vyska = ($sirka / $sirka_orig) * $vyska_orig;

// Zmenseni
$novy = imagecreatetruecolor($sirka, $vyska); // novy obrazek bude v truecolor
imageantialias($novy, true);
$original = imageCreateFromJpeg($nazevjpg);
imagecopyresampled($novy, $original, 0, 0, 0, 0, $sirka, $vyska, $sirka_orig, $vyska_orig); // vlastni resample
ImageDestroy($original); // uvolneni pameti

// Uloz zmenseny jpeg
imageJpeg($novy,$novynazevjpg,95);

?>
Kdybys chtěl vytvořit nový jpeg soubor obsahující zmenšený originál, změň poslední řádek:

imageJpeg($novy,"adresar/nazev_noveho_jpegu.jpg",95);
<?php
/*
Funkce pro upload obrázku z formuláře:

ImgTh_Upload (char<$img_path>, char<$th_path>, char<$img_name>, char<$th_name>, char<$form_name>, int<$max_size_img>, int<$max_byte>, int<$size_th>, &$error)

syntaxe:

$img_path - cesta k adresáři kam chceme zapisovat obrázek ("/3w/borec.cz/a/avar/")
$th_path - cesta k adresáři kam chceme zapisovat náhled ("/3w/borec.cz/a/avar/")
$form_name - jméno vstupního pole formuláře (atribut name tagu input)
$max_size_img - maximální rozměr delší strany obrázku v px, který se ještě nebude zmenšovat
$max_byte - maximální velikost obrázku v bytech, jaký lze zpracovat
$size_th - rozměry delší strany náhledu v px.
*/

function ImgTh_Upload($img_path, $th_path, $form_name, $max_size_img, $max_byte, $size_th, &$error)
{
global $HTTP_POST_FILES;

if (Is_Uploaded_File ($HTTP_POST_FILES["$form_name"]["tmp_name"])) // podmínka - uploud souboru
{
if ($HTTP_POST_FILES["$form_name"]["size"] < $max_byte) // podmínka - velikost menší než $max_byte
{
if(
($HTTP_POST_FILES[$form_name]["type"] == "image/pjpeg" // podmínka - typ progresiv JPEG
|| $HTTP_POST_FILES[$form_name]["type"] == "image/jpeg" // podmínka - typ JPEG
|| $HTTP_POST_FILES[$form_name]["type"] == "image/x-png") // podmínka - typ PNG
)
{
switch ($HTTP_POST_FILES[$form_name]["type"]): // podle hodnoty
case "image/pjpeg": // nastavíme proměnou $type na typ obrázku
$type = ".jpg"; // JPEG
$ImageCreateFrom = "ImageCreateFromJPEG";
$Image = "ImageJPEG";
break;
case "image/jpeg":
$type = ".jpg"; // JPEG
$ImageCreateFrom = "ImageCreateFromJPEG";
$Image = "ImageJPEG";
break;
case "image/x-png":
$type = ".png"; // PNG
$ImageCreateFrom = "ImageCreateFromPNG";
$Image = "ImagePNG";
break;
default: // v ostatních případech
Die ("CHYBA!<br />objeven nebezpečný soubor.");// ukončíme běh
endswitch;
$date = Date("d.m.y - H:i");
$uniq = UniqID(Date("y_m_d_H_i"));
$img_name = "img_".$uniq;
$th_name = "th_".$uniq;
$image = "$img_path"."$img_name"."$type"; // cesta k obrázku
$thumb = "$th_path"."$th_name"."$type"; // cesta k náhledu
if (Move_Uploaded_File($HTTP_POST_FILES[$form_name]["tmp_name"],"$image"))
{
$img_zdroj = $ImageCreateFrom("$image"); // ukazatel funkcí
$width = ImageSX ($img_zdroj); // zjistíme šířku obrázku
$height = ImageSY ($img_zdroj); // zjistíme výšku obrázku

if ($width > $height) // pokud je obrázek na šířku
{ // zachováme poměř stran
$velx = $size_th;
$vely = $size_th * ($height / $width);
}
elseif ($width < $height) // pokud je obrázek na výšku
{ // zachováme poměř stran
$velx = $size_th * ($width / $height);
$vely = $size_th;
}
elseif ($width == $height) // pokud je obrázek čtverec
{ // zachováme poměř stran
$velx = $size_th;
$vely = $size_th;
}
SetType ($velx, "integer"); // nastavíme šířku náhledu na celé číslo
SetType ($vely, "integer"); // nastavíme výšku náhledu na celé číslo
$th_cil = ImageCreateTrueColor($velx,$vely);// prostor pro náhled
ImageCopyResampled($th_cil,$img_zdroj,0,0,0,0,$velx,$vely,$width,$height);// zmensime obrazek na náhled
$Image($th_cil,"$thumb"); // zapíšeme nový náhled do souboru
ImageDestroy($th_cil); // uvolníme paměť cíloveho náhledu

if ($width > $max_size_img || $height > $max_size_img)
{
$koef = $max_size_img / $size_th;
$kvelx = $velx * $koef;// získáme hledanou šířku pro obrázek
$kvely = $vely * $koef;// získáme hledanou výšku pro obrázek
SetType ($kvelx, "integer");// nastavíme šířku obrázku na celé číslo
SetType ($kvely, "integer");// nastavíme výšku obrázku na celé číslo
$img_cil = ImageCreateTrueColor($kvelx,$kvely); // vytvorime prostor pro cílovy obrazek
ImageCopyResampled($img_cil,$img_zdroj,0,0,0,0,$kvelx,$kvely,$width,$height);// zmensime obrazek na povolenou velikost
$width = $kvelx;
$height = $kvely;
switch ($type):
case ".jpg":
ImageJPEG ($img_cil,"$image"); // přepíšeme obrazek v souboru
ImageDestroy($img_cil); // uvolníme pameť obrázku
break;
case ".png":
ImagePNG ($img_cil,"$image"); // přepíšeme obrazek v souboru
ImageDestroy($img_cil); // uvolníme pameť obrázku
break;
endswitch;
}
ImageDestroy($img_zdroj); // uvolnime pameť zdrojového obrázku
$img_size = FileSize("$image"); // zjistíme velikost obrázku
$thumb_size = FileSize("$thumb"); // zjistíme velikost náhledu

// inicializujeme pole které bude návratovou hodnotou funkce

$return = Array (
"img_name" => "$img_name"."$type",
"thumb_name" => "$th_name"."$type",
"img_place" => "$image",
"thumb_place" => "$thumb",
"img_size" => $img_size,
"thumb_size" => $thumb_size,
"img_width" => $width,
"img_height" => $height,
"thumb_width" => $velx,
"thumb_height" => $vely,
"date" => "$date",
);
}
else {$error = e_14;} // obrázek se nepodařilo přenést
}
else {$error = e_15;} // obrázek je nepovoleného formátu
}
else {$error = e_16;} // obrázek je větší než je povoleno
}
else {$error = e_17;} // obrázek nebyl poslán

return $return; // návratováhodnota je pole s informacemi
}
?>
asi jsem moc velka lama, ale mam s tim porad problem. ja potrebuju poslat z formulre obrazek a v naslednem skriptu ho zmensit a ulozit. nic vic. neporadili byste mi prosim prosim?

$odesilany_obrazek
$vyska
$sirka
$nova_sirka
$nova_vyska
$nazev_noveho