Autor Zpráva
ppavel
Profil *
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 *
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 *
$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 *
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 *
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
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 *
diky za pomoc
ppavel
Profil *
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.


<?

if (is_uploaded_file($soubor)) {
if (move_uploaded_file($soubor, "/DISK3/WWW/ppavel.com/www/pokusy/$soubor_name")) {
print "upload byl uspesny";
}
else { print "upload byl neuspesny";
}
}
////////////////////////////////////////////////////////////////////// /////////
if (file_exists($soubor)) {
$file=$soubor_name;
strtolower($file);
$new="nahled_".$soubor_name;
$img_zdroj=imagecreatefromjpeg($file);
list($img_x, $img_y, $type, $attr) = getimagesize($file);
$pomer=$img_x/$img_y;
$druhastrana=150*$pomer;
$img_cil=imagecreatetruecolor($druhastrana,150);
imagecopyresized($img_cil,$img_zdroj,0,0,0,0,$druhastrana,150,$img_x,$ img_y);
imagejpeg($img_cil,$new);
imagedestroy($img_zdroj);
imagedestroy($img_cil);
}
?>
Kalda
Profil *
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.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0