Autor | Zpráva | ||
---|---|---|---|
ppavel Profil * |
#1 · Zasláno: 8. 9. 2005, 19:06:12
Je možné v PHP měnit velikost obrázku (nemyslím rozměry ale kapacitu)
Konkrétně mi jde o to .... Když mi někdo Uploaduje obrázek na server, aby se z něho udělal náhled. |
||
Kalda Profil * |
#2 · Zasláno: 8. 9. 2005, 19:47:38
Pro práce s obrázky v PHP lze použít GD knihovnu http://www.php.net/manual/en/ref.image.php , která je součástí instalace PHP nebo ImageMagick http://www.imagemagick.org/, který už není standardní součástí, ale některé hostingy jej nabízejí. Záleží na hostingu, některé ho mají jako externí binárku, jiné ho nabízejí jako modul v PHP (osobně preferuji ImageMagick).
Vaše tvrzení (nemyslím rozměry ale kapacitu) se dle mého názoru vylučuje s Když mi někdo Uploaduje obrázek na server, aby se z něho udělal náhled. Pakliže chcete udělat náhled, změníte obrázku rozměry (šířku / výšku). Změnu kapacity (jesli jsem dopře pochopil, myslíte změnu datové velikosti) docílíte zvýšením komprese. Rozměry zůstanou stejné, ale bude to na úkor kvality obrázku. |
||
WertriK Profil * |
#3 · Zasláno: 8. 9. 2005, 20:39:08
$file = $_FILES['soubor']['name'];
list($jmeno,$typ) = explode(".",$file); $typ = strtolower($typ); if ($typ == "gif") { $vstup_funkce = ImageCreateFromGIF; $vystup_funkce = ImageGIF; } elseif ($typ == "jpg") { $vstup_funkce = ImageCreateFromJPEG; $vystup_funkce = ImageJPEG; } elseif ($typ == "png") { $vstup_funkce = ImageCreateFromPNG; $vystup_funkce = ImagePNG; } else { echo "<center>"; echo "Supported file type : <font color=\"red\">*.gif , *.jpg , *.png</font><br>"; echo "<A HREF=javascript:history.back()>Try again</A>"; die("</center>"); exit(); } if(file_exists("screenshots/big/$file")) { echo "Soubor s jménem $file už existuje"; } else { if (move_uploaded_file($_FILES['soubor']['tmp_name'], "big/$file")) { echo "Soubor byl nahrán na server!<br>"; $img_zdroj = $vstup_funkce("big/$file"); $img_cil = imagecreatetruecolor(130, 130); list($img_x, $img_y, $type, $attr) = getimagesize("big/$file"); ImageCopyResized($img_cil,$img_zdroj,0,0,0,0,130,130,$img_x,$img_y); $vystup_funkce($img_cil,"mini/$file"); ImageDestroy($img_zdroj); ImageDestroy($img_cil); } Vytvari zmenseninu na rozmery 130x130... |
||
WertriK Profil * |
#4 · Zasláno: 8. 9. 2005, 20:40:00
if(file_exists("big/$file")) {
echo "Soubor s jménem $file už existuje"; } else { if (move_uploaded_file($_FILES['soubor']['tmp_name'], "big/$file")) { echo "Soubor byl nahrán na server!<br>"; $img_zdroj = $vstup_funkce("big/$file"); $img_cil = imagecreatetruecolor(130, 130); list($img_x, $img_y, $type, $attr) = getimagesize("big/$file"); ImageCopyResized($img_cil,$img_zdroj,0,0,0,0,130,130,$img_x,$img_y); $vystup_funkce($img_cil,"mini/$file"); ImageDestroy($img_zdroj); ImageDestroy($img_cil); } } ted je to spravne |
||
error414 Profil * |
#5 · Zasláno: 9. 9. 2005, 06:47:18
ono je take dobre kdyx nekdo nahrava obrazek na server zkontrolavat jeho velikost, kdyz ti tam nekdo nahraje obrazek 1x1 pixel a tz ho pak roztahnes na 130x130 tak budes mit jen barevnou plochu.
PHP by melo kontrolovat vse a jeste kontrolovat kontrolu protoze uxivatele jsou potvory, hlavne ty zkusenejsi a zkousi co ten tvuj kod vydrzi. |
||
krteczek Profil |
#6 · Zasláno: 9. 9. 2005, 07:27:54 · Upravil/a: krteczek
http://www.krteczek.czweb.org/jpw/resize/resize.txt
php funkce kterou používám k vytváření náhledů ve svem rs. objevil sem ji už ani nevím kde, takže snad vám pomuže. je ošetřeno že pokud je obrázek menší po obou stranách než čtverec daný rozměry v definici Delsi_strana tak ho už nezmenšuje. krteczek |
||
ppavel Profil * |
#7 · Zasláno: 9. 9. 2005, 12:01:20
diky za pomoc
|
||
ppavel Profil * |
#8 · Zasláno: 10. 9. 2005, 18:43:46
tak jsem to tak nějak rozchodil, zatim mám následující skript (chybí tam sposta věcí .....). Ale problém je v tom, že pokud chci zpracovat větší obrázek (nepřišel jsem na to kde je hranice ale řádově 100kb) tak se nic nestane, nahraje se na server, ale dál nic a přitom parser nehází žádnou chybu.
<? |
||
Kalda Profil * |
#9 · Zasláno: 12. 9. 2005, 02:04:05
Problém bude zřejmě v paměťovém omezení u poskytovatele. PHP musí alokovat každý pixel a přiřadit mu jeho barevnou hloubku - pakliže vyčerpá veškerou paměť, kterou má maximálně přidělenou, tak končí. Problém tedy nehledejte v datové velikosti, ale bude tam určitá maximální velikost pro: šířka x výška x barevná hloubka.
|
||
Časová prodleva: 20 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0