zmena velkosti obrazku
8 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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