| 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: 15 let
|
|||
0