Autor Zpráva
Rellik
Profil
Zdravím.
Původně sem to chtěl vyřešit sám, ale už opravdu nevím jak dál...
Potřebuju vytvořit na webu upload fotky, který se pak zmenší.
Upload není problém to sem měl hotové, teď sem chtěl dodělat resize fotky aby uživatel neznalý grafických programů jen nahrál fotku a ta se upravila podle potřeby.
Takže jak to dělám:
Při uploadu se fotka nahraje do dočasného adresáře (./admin/tmp/) A po 3 sekundách po uploadu se stránka přesměruje na jinou, kde má dojít ke zkopírování zmenšené fotky do adresáře určeného při uploadu.

časovou prodlevu a přesměrování řeším pomocí js:
window.setTimeout("window.location.href=\"upload_rs.php?pict='.$dir.'&image='.$_FILES["file"]["name"].'\"", 1000)

Obsah souboru upload_rs.php :
<?php
$soubor = $_GET['image'];
$dir = $_GET['pict'];
						echo "Foto: <img src=\"thumb_800.php?pict=".$dir."/".$soubor."&image=".$soubor."\"><br>";
						echo "<br><span class='red'>Soubor byl úspěšne nahrán.</span>";
?>


Soubor na zmenšení je thumb_800.php:
<?php
header('Content-type: image/jpeg');
$galerie = $_GET['pict'];
$jmeno= $_GET['image'];
$adresa = "../galery/".$galerie;  //cílová složka pro zkopírování zmenšeného obrázku
$adresa_org = "tmp/".$jmeno;  //složka s dočasným obrázkem

	$velikost=getimagesize($adresa_org);
	$sirka=$velikost[0];
	$vyska=$velikost[1];
	$tn_sirka=800;
	$tn_vyska=800*($vyska/$sirka);

	$org=ImageCreateFromJpeg($adresa_org);
	$tn=ImageCreateTrueColor($tn_sirka,$tn_vyska);
	umask(0000); 
	ImageCopyResampled($tn,$org,0,0,0,0,$tn_sirka,$tn_vyska,$sirka,$vyska);
        ImageJpeg($tn,$adresa);
	ImageJpeg($tn);

ImageDestroy($tn);
ImageDestroy($org);
?>


Na localhostu to funguje parádně, ale jak to hodím na "ostrý" servr, tak už to nejede. Už se s tím hraju od včera, zkouším i jiné postupy, ale obrázek ne a ne se překopírovat.. :-(
Poradí někdo?? Díky
Taps
Profil
Rellik:
ale obrázek ne a ne se překopírovat.
jakou funkci používáš pro upload ? Některé hostingy mají z bezpečnostních důvodů zablokovanou funkci copy a většinou se používá náhrada move_uploaded_file, případně lze také použít ftp_put
Rellik
Profil
Obrázek na servr se zkopíruje. Ale ta zmenšenina pomocí toho scriptu už se dál nepřekopíruje. Upload neřeším. A funkci copy nikde na svých webech právě kvůli tomuto omezení nepoužívám. Používám move_uploaded_file() ale jak říkám fotka se uploaduje, ale dál už to jít nechce.
Uploadlý obrázek se nahraje do složky ./admin/tmp z té se pak má po přesměrování z uploadu pomocí zmenšovacího scriptu přenést do složky ./galery/prislusna_slozka

Všechny proměnné se přenášejí správně, ale prostě se to na ostrém servru nevytvoří. Stejný script jen s jiným nastavením používám na vytvoření miniatur, takže script funguje správně. Ostatně na locallhostu mi funguje i toto jak sem to popsal. Naostro se tomu prostě nechce :-(
Taps
Profil
Rellik:
a práva u adresářů jsou správně nastavena ?
Rellik
Profil
To bych nepsal, že se to uploaduje...
Jinak zjištění takové: když sem zkusil nahrát menší obrázek, tak to funguje. Funguje to až když je obrázek v rozlišení 3000x....px a míň. Což mi sice trochu pomohlo, ale když bude někdo nahrávat něco ve větším rozlišení, tak to fungovat nebude. Takže je to v podstatě k ničemu, když se to bude zase muset zmenšit ručně. To pak může zrovna uživatel zmenšit na těch 800x...px :-(
Alphard
Profil
Vypište si chyby. Pravděpodobně ale je problém v malé paměti, je to zmíněno i ve FAQ.
Rellik
Profil
Chyby to v podsatě nepíše. Jen když je obrázek širší než 3000px tak to vyplivne - obrázek nelze zobrazit, protože obsahuje chyby.
http://veletiny.cz/thumb_800.php?pict=soutez_hasicu/hasic_1.jpg
Při uploadu menšího obrázku všechno funguje. Takže to nejspíš neumí zmenšit větší obrázky. V tom případě, ale nevím proč mi to na localhostu funguje.
Velikostí (datovou) to není - zkoušel sem velké rozlišení ( 3872x2592) s různou kompresí (od 6,5Mb po 500kb) a nešel. Až když sem to zmenšil na těch 3000x? a míň tak to šlo i s velkým objemem dat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0