Autor | Zpráva | ||
---|---|---|---|
Tomashekk Profil |
#1 · Zasláno: 14. 1. 2011, 00:32:12 · Upravil/a: Tomashekk
Hlasí mi to chybu:
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /localhost/...... on line 16 kód <?php if($_FILES['userfile'] != ""){ echo "aa"; $imageinfo = getimagesize($_FILES["userfile"]["tmp_name"]); if (!getimagesize($_FILES['userfile']['tmp_name'])) { echo "Invalid Image File..."; exit(); } if($imageinfo['mime'] != 'image/png' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/jpg') { echo "Špatný typ obrázku"; exit(); } if($imageinfo[0] > 800 || $imageinfo[1] > 800){ echo "Rozlišení obrázku je moc velké!"; exit(); } if($_FILES["userfile"]["size"] > 1000000 ){ $velikost_obrazku = $_FILES["userfile"]["size"] / 1000000; echo "Velikost obrázku je velká! Jeho velikost je".$velikost_obrazku."MB a max je 1MB"; exit(); } $uploaddir = 'uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); if (file_exists("uploads/" . $_FILES["userfile"]["name"])) { echo $_FILES["userfile"]["name"] . " already exists. "; } else if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "Nahrání obrázku bylo úspěšné.\n"; } else { echo "Nahrávání obrázku selhalo.\n"; } } ?> Nějak nemohu docílit kde je chyba |
||
xmark Profil |
#2 · Zasláno: 14. 1. 2011, 00:40:30 · Upravil/a: xmark
Tomashekk:
Nejsem si jist, ale zkusil bych <form action="#" method="post" enctype="mutipart/form-data"> |
||
Tomashekk Profil |
#3 · Zasláno: 14. 1. 2011, 00:42:38
xmark:
stále nic.. furt to samé :( |
||
Tomashekk Profil |
#4 · Zasláno: 14. 1. 2011, 01:27:52
V příspěvku #1 je upraven kod, jak mi to funguje. Co teď ale potřebuji. Okomentovat zda to takhle je dobré (chci povolit jen PNG a JPG). A také poradit jak by se dalo uložit ten obrázek s jinýma rozměrama. Uživatel tam dá obrázek o rozměrech 1024x600 a já bych ho chtěl změnit aby to bylo 800x.... (ovšem nezdeformovaný). Jak by se to udělalo?
|
||
KGW Profil |
#5 · Zasláno: 14. 1. 2011, 09:58:08
jpe v mime dej pryč a dej místo něj pjpeg a na zmenšení bude něco jako imagecopyresampled
|
||
Tomashekk Profil |
#6 · Zasláno: 14. 1. 2011, 12:35:01
KGW:
jakej je rozdíl mezi jpeg a pjpeg? |
||
holi Profil |
#7 · Zasláno: 14. 1. 2011, 13:25:25 · Upravil/a: holi
Toto je kod pro zmenšení obrázku, je to vytažené z mého zdrojáku takže cesty k souboru atd je potřeba změni. Funkce je jednoduchá, upne se obrázek, vytvoří se jeho kopije s rozlíšením 198x150 tzn. "thumb" a potom se udělá to samé akorát se zjištuje jestli je obrázek menší jak 1024x768 pokud ne zmenší se na tuto velikost, výsledek => obrázek ve full rozlíšení, další obrázek v rozlíšení 1024x768, a pak zmenšenína nebo taky náhled v 198x150.
BTW. doporučuji jedno to zmenšování smazat např náhled protože pokud máte nějaký placený hosting a ne svůj tak defaultních 16Mb RAMek což normálně bývá vám u obrázků třeba 2Mb nebude stačit. <? if($sel == "projekty"){ $cesta = "../galerie/projekty/full"; $cesta2 = "../galerie/projekty/thumb"; $cesta3 = "../galerie/projekty/large"; } //KONTROLA FORMÁTU $kontrola = Array ('png', 'jpg', 'jpeg'); $path = PathInfo($_FILES['File']['name']); if (!In_Array(StrToLower($path['extension']), $kontrola)) { echo "Vkládaný soubor není obrázek!"; exit; } //UPLOAD OBRÁZKU $Name = $_FILES['File']['name']; Move_Uploaded_File($_FILES['File']['tmp_name'], "$cesta/$Name"); //ZJIŠTĚNÍ ROZLÍŠENÍ UPLOADOVANÉHO OBRÁZKU $Image = getImageSize("$cesta/$Name"); //ROZLÍŠENÍ NÁHLEDU $NewWidth = "198"; $NewHeight = "150"; //VYTVOŘENÍ NOVÉHO OBRÁZKU PRO NÁHLED $thumb = ImageCreateTrueColor ($NewWidth, $NewHeight); // NAČTENÍ PŮVODNÍHO OBRÁZKU $jpeg = Array('jpg','jpeg'); $png = Array('png'); $format = pathinfo("$cesta/$Name"); if(In_array(StrToLower($format['extension']), $jpeg)){ $source = ImageCreateFromJpeg("$cesta/$Name"); } if(In_array(StrToLower($format['extension']), $png)){ $source = ImageCreateFromPng("$cesta/$Name"); } // ZMENŠENÍ ImageCopyResized($thumb, $source,0,0,0,0,$NewWidth,$NewHeight,$Image[0],$Image[1]); // ULOŽENÍ OBRÁZKU NA DISK if($koncovka == "jpg" || "jpeg"){ ImageJpeg ($thumb, "$cesta2/$Name", 100); } if($koncovka == "png"){ ImagePng ($thumb, "$cesta2/$Name", 100); } // UVOLNĚNÍ PAMĚTI ImageDestroy($thumb); ImageDestroy($source); //ROZLÍŠENÍ NÁHLEDU if($Image[0]<1024){ $NewWidth2 = $Image[0]; $NewWidth2 = $Image[0]; } else{ $NewWidth2 = "1024"; $NewHeight2 = "768"; } //VYTVOŘENÍ NOVÉHO OBRÁZKU PRO ZOBRAZENÍ $large = ImageCreateTrueColor ($NewWidth2, $NewHeight2); // NAČTENÍ PŮVODNÍHO OBRÁZKU if($koncovka == "jpg" || "jpeg"){ $source = ImageCreateFromJpeg("$cesta3/$Name"); } if($koncovka == "png"){ $source = ImageCreateFromPng("$cesta3/$Name"); } // ZMENŠENÍ ImageCopyResized($large, $source,0,0,0,0,$NewWidth2,$NewHeight2,$Image[0],$Image[1]); // ULOŽENÍ OBRÁZKU NA DISK // NÁZEV OBRÁZKU BUDE ZAČÍNAT PREFIXEM thumb- if($koncovka == "png"){ ImagePng ($large, "$cesta3/$Name", 100); } if($koncovka == "jpg" || "jpeg"){ ImageJpeg ($large, "$cesta3/$Name", 100); } // UVOLNĚNÍ PAMĚTI ImageDestroy($large); ImageDestroy($source); //VYPÍŠE ZPRÁVU A ODKAZ NA PŘEDCHOZÍ STRÁNKU echo "<center>Obrázek ".$Name." byl nahrán.<br><a href=\"gallery.php\">Zpět na předešlou stránku</a>"; ?> Edit: Zapoměl sem to dát do <??> |
||
xmark Profil |
#8 · Zasláno: 14. 1. 2011, 13:37:38
holi:
A co když budu nahrávat obrázek Eiffelovky, tzn. nastojato? Připadá ti rozměr 198x150 fajn? |
||
KGW Profil |
#9 · Zasláno: 14. 1. 2011, 13:49:22
pjpeg = progressive jpeg
|
||
holi Profil |
#10 · Zasláno: 14. 1. 2011, 13:51:03
bože pokud chcete mít pěkně uspořádanou galerii musíte mít nějakou oběť, ale pokud to Tomashekkovi bude vadit co mu bráni si to nadefinovat měřítko zmenšení např
<?php $meritko = 0.3;?> <?php $NewWidth2 = $Image[0]*$meritko; $NewHeight2 = $Image[1]*$meritko; ?> Výsledek by byl o 70% menší :)) |
||
Tomashekk Profil |
#11 · Zasláno: 14. 1. 2011, 15:50:10
KGW:
ale jakej je v tom rozdíl? |
||
Tomashekk Profil |
#12 · Zasláno: 14. 1. 2011, 15:54:29
xmark:
jako já mám už zobrazování galerie hotové, jde mi už jen o upload jen kdyby to přesáhlo prostě těch 800 na výšku nebo šířku, tak aby to zmenšilo za uživatele (aby to bylo i pro blba). holi: z tvých kódů si něco převezmu, děkuji moc |
||
holi Profil |
#13 · Zasláno: 14. 1. 2011, 15:59:31
pokud budeš používat obě zmenšení tak si u zmenšování large dej bacha, udělal jsem tam chybu u podmínky kdy se vybírá proměnná $source jo musíš přepsat na $source2 nebo jiný název protože je už použita u prvního zmenšování.
|
||
Tomashekk Profil |
#14 · Zasláno: 14. 1. 2011, 16:02:21
holi:
bude stačit v podstatě jen toto // NAČTENÍ PŮVODNÍHO OBRÁZKU $jpeg = Array('jpg','jpeg'); $png = Array('png'); $format = pathinfo("$cesta/$Name"); if(In_array(StrToLower($format['extension']), $jpeg)){ $source = ImageCreateFromJpeg("$cesta/$Name"); } if(In_array(StrToLower($format['extension']), $png)){ $source = ImageCreateFromPng("$cesta/$Name"); } // ZMENŠENÍ ImageCopyResized($thumb, $source,0,0,0,0,$NewWidth,$NewHeight,$Image[0],$Image[1]); // ULOŽENÍ OBRÁZKU NA DISK if($koncovka == "jpg" || "jpeg"){ ImageJpeg ($thumb, "$cesta2/$Name", 100); } if($koncovka == "png"){ ImagePng ($thumb, "$cesta2/$Name", 100); } // UVOLNĚNÍ PAMĚTI ImageDestroy($thumb); ImageDestroy($source); |
||
Časová prodleva: 13 let
|
0