Autor Zpráva
gabbko
Profil
Zdravim, chcel by som sa opytat ci nemá niekto komplet script alebo link na upload obrazku na server s moznostou pridania textoveho watermarku, skusal som uz vsetko ale nejak to nejdem rozbehat...
Dakujem pekne
DarkMeni
Profil *
Záleží na tom jestli ten watermark má být text nebo obrázek, přidání textu k obrázku jsem tu někde viděl ale přidání obrázku buď nejde a nebo to bude složitější
gabbko
Profil
jednalo by sa len o text
dakujem
Rellik
Profil
Ale jde tam přidat i obrázek. Zrovna včera sem to zkoušel, ale moc mi to nevyhovovalo. Script už nemám, ale bylo to něco takového:

http://www.nzwhost.com/article/simple-php-watermark
gabbko
Profil
mne staci len text ale aj tak dakujem
Rellik
Profil
Ok.
Tento script používám při uploadu fotky, ke zmenšení a přidání vodoznaku:
thumb_800.php

<?php header('Content-type: image/jpeg');
/**********************************************
script na zmenšení fotky s přidáním vodoznaku
***********************************************/
$galerie = $_GET['pict']; // získání složky kam se má zmenšená fotka uložit
$jmeno= $_GET['image']; // získání názvu fotky
$adresa = "./galery/".$galerie."/".$jmeno; // cílová složka
$adresa_org = "./tmp/".$jmeno;             // zdrojový obrázek
$font_size = 14;  // velikost textu
$color = imagecolorallocate($adresa_org, 255,255,255);

	$velikost=getimagesize($adresa_org);
        $sirka=$velikost[0];
	$vyska=$velikost[1];
	$tn_sirka=800;  // požadovaná šířka fotografie
	$tn_vyska=800*($vyska/$sirka); // dopočítání správné výšky v poměru

	$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);
	ImageTTFText ($tn, $font_size, 0, 56, 36, $color, "./6.ttf","Text v levo nahoře");
	ImageJpeg($tn,$adresa);
	ImageJpeg($tn);

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


ve scriptu ho pak voláš jako normální obrázek:

<img src="thumb_800.php?pict=cilova_slozka&image=nazev_fotky.jpg">
gabbko
Profil
Rellik:
Tento script používám při uploadu fotky, ke zmenšení a přidání vodoznaku:
thumb_800.php

tento script previazes s formularom uploadu?
Rellik
Profil
Já to mám trošku složitější:
Ve formuláři mám 3 kolonky + 1 select
mám tam:
1/ výběr fotky
2/ popis fotky
3/ autor fotky
4/ select - výběr galerie

Což je celkem jedno. Jde o to že uploadovaná fotka se mi uloží do adresáře ./tmp/ po 1 sekundě se stránka přesměruje na zpracování fotky

V tom je jen :
upload_rs.php

<?php

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

?>

Z uploadovacího souboru se to přesměruje na adresu:
upload_rs.php?pict=cilova_slozka&image=fotka.jpg
gabbko
Profil
fuuu tak to znie celkom dobre, dal by sa preposlat cely ten upload system? bol by som naozaj povdacny... dakujem
Rellik
Profil
dal, ale to ti moc nepomůže, jde to i přes databázi. no snad si s tím poradíš:
script upload.php
<?php



echo '<hr>'."\n";

echo 'Volba fotogalerie kam se má fotografie uložit :';

echo '<form action="?upload=ok" method="post" enctype="multipart/form-data">'."\n";

echo '<table class="add_image">';

		$vypis =  mysql_query("SELECT * FROM galerie");

		while($row = mysql_fetch_array($vypis)){

		echo '<tr><td><input type="radio" name="slozka" value="'.$row["slozka"].'" checked><b>'.$row["nazev"].'</b></td></tr>'."\n"; 

		$nazev = $row["nazev"];}

		echo "<br>"."\n";

		echo '</table>';

		if($nazev== "")

		{ echo "<span class='red'>Nejdříve je nutvo vytvořit nějakou galerii!</span>";

		}

		else echo'<form method="post" enctype="multipart/form-data">

		Soubor:

		<input type="file" name="file" id="file" ><br>

		Popis:

		<textarea name="popis" cols="60" rows="6"></textarea>

		<input type="submit" name="submit" value="Vložit" />

		</form>';

		

?>

<br>

<?php
$send = $_GET['upload'];
if($send == "ok")

{

$dir = $_POST['slozka'];

$popis = $_POST['popis'];

$slozka = "../galery/".$dir."/";

$soubor = $_FILES["file"]["tmp_name"];

$type = $_FILES["file"]["type"];


if ($type=='image/jpeg')

		{

		if (is_uploaded_file($soubor))

			{

			$velikost=getimagesize($soubor);

			$sirka=$velikost[0];

			$vyska=$velikost[1];

			}

				if ($sirka <= 3000)

     			 {

					$foto = $_FILES["file"]["name"];
					$rename_foto = strtr($foto,"áčďéěíňóřšťúůýž ÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ","acdeeinorstuuyz_acdeeinorstuuyz");

  						$PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `foto` WHERE `foto`='".$rename_foto."'"),0);

     				 if($PocetStejnych!=0){

       			 echo "<span class='red'>Název fotografie \"".$foto."\" se shoduje s názvem jiné fotografie!!! Přejmenujte ji a zkuste znovu nahrát.</span>\n"; 
        				}
       			 		else {  				 
									move_uploaded_file($_FILES["file"]["tmp_name"], "../tmp/".$rename_foto);

									mysql_query("insert into foto set foto='".$rename_foto."', popis='&nbsp;".$popis."', galerie='".$dir."'");
									 
									 echo '<script type="text/javascript" for="window" event="onLoad()">';

									 echo '<!--

       							 window.setTimeout("window.location.href=\"upload_rs.php?pict='.$dir.'&image='.$rename_foto.'\"", 1000)';

									 echo '// --> </script>';
     							 }

					}

  					 else echo "<span class='red'>Velikost obrázku (".$sirka."x".$vyska."px) překračuje povolenou mez! Zmenšete ho prosím pomocí nějakého editoru.</span>";

      

		}else echo "<span class='red'>Formát souboru musí být obrázek jpg!</span>";

}


mysql_close();

?>


přesměruje to na :
script upload_rs.php - viz minulý příspěvek

a ten zmenšovací script:
thumb_800.php - taky v předchozím příspěvku


Když z toho uloadu vyhážeš tu databázi, tak ti to bude fungovat... ;) Jen si pak udělej ještě script na vymazání té dočasné složky ./tmp/
kód:
		// Funkce na mazání dočasného souboru ./tmp -----------------------------------

function rmdirtree($dirname) {

   if (is_dir($dirname)) {

       $result=array();

       if (substr($dirname,-1)!='/') {$dirname.='/';}

       $handle = opendir($dirname);

       while (false !== ($file = readdir($handle))) {

           if ($file!='.' && $file!= '..') {

               $path = $dirname.$file;

               if (is_dir($path)) {

                   $result=array_merge($result,rmdirtree($path));

               }else{

                   unlink($path);

                   $result[].=$path;

               }

           }

       }

       closedir($handle);

       $result[].=$dirname;

       return $result;

   }else{

       return false;

   }

}

	rmdirtree('../tmp');



// Konec funkce na mazání galerie -----------------------


- možná je v tom pár věcí navíc, protože s tím mažu i vnořené složky ,ale to neřeš... :)

EDIT: ukázka http://fotorellik.profitux.cz/thumb_800.php?pict=hdr_fotografie&image=uhh_prostredni.jpg
DarkMeni
Profil *
Nejde zpracovaný a zmenšený/zvětšený obrázek uložit jako obrázek? Aby se to nemuselo volat jako soubor ale jako normální obrázek, protože tohle mi příjde nějak složitý a to by sem už rači používal atributy width a height u <img /> ... jaký je mezitím vlastně rozdíl? Zmenšení skriptem nebo atributem?
Rellik
Profil
zmenšení scriptem je zmenšení obrázku jako v editoru. Zmenšení atributem mu je přikážeš že má byt velký jak jsi zadal - obrázek bude stejně velký...

ten upload je složitý protože je tam ta databáze... bez ní by to bylo pár řádků...
tady je bez té databáze:
<?php

echo '<h2>Přidávání fotografií do galerie</h2>'."\n";

echo 'Přidávání fotografií je omezeno šířkou fotografie, která je 600px!'."\n";

echo '<hr>'."\n";

$send = $_GET['upload'];
if($send == "ok")

{



$slozka = "slozka/";

$soubor = $_FILES["file"]["tmp_name"];

$type = $_FILES["file"]["type"];


if ($type=='image/jpeg')

		{

		if (is_uploaded_file($soubor))

			{

			$velikost=getimagesize($soubor);

			$sirka=$velikost[0];

			$vyska=$velikost[1];

			}

				if ($sirka <= 800)

     			 {

					$foto = $_FILES["file"]["name"];
					$rename_foto = strtr($foto,"áčďéěíňóřšťúůýž ÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ","acdeeinorstuuyz_acdeeinorstuuyz");

  									move_uploaded_file($_FILES["file"]["tmp_name"], $slozka.$rename_foto);

									 echo '<script type="text/javascript" for="window" event="onLoad()">';

									 echo '<!--

       							 window.setTimeout("window.location.href=\"upload.php?up=ok\"", 1000)';

									 echo '// --> </script>';
     				}  
     				else echo "<span class='red'>Velikost obrázku (".$sirka."x".$vyska."px) překračuje povolenou mez! Zmenšete ho prosím pomocí nějakého editoru.</span>";

			} 
			else echo "<span class='red'>Formát souboru musí být obrázek jpg!</span>";

     

}

// formular pro upload

echo '<form action="upload.php?upload=ok" method="post" enctype="multipart/form-data">'."\n";

echo '<input type="file" name="file"><br>'."\n";

echo "<br>"."\n";

echo '<input type="submit" value="Vložit"></form>'."\n";

$up = $_GET['up'];
if($up =="ok") { echo "Soubor byl nahrán"; }

?>



místo toho přesměrování na upload.php?up=ok můžeš dát přesmerování na: thumb_800.php?slozka_kam_ulozit&image=fotka.jpg
Rellik
Profil
Tady máš celou ukázku v provozu:
http://fotorellik.profitux.cz/upload.php.zip
jak si to upravíš je na tobě... ;)
DarkMeni
Profil *
Ten upload chápu ale tím složitým sem myslel to generování, možná by mi to připadalo úplně normálně kdyby jsem věděl co jaká funkce dělá ale anglicky moc neumim (v manuálu to je anglicky) a potom je tam ještě kilo argumentů, jestli se v tom vyznáš tak respekt před tebou :D jinak co dělá umask?
Rellik
Profil
DarkMeni:
nastavuje práva souboru. V podstatě je nuluje jako by práva nebyly určené a při kopírování se práva vytvoří automaticky jako bys to kopíroval pomocí nějakého programu... konkrétně u tohoto uploadu se nastaví na uploadovaný soubor práva 600 (oprávnění vlastníka pro čtení a zápis) Na složky do kterých se prování upload je potřeba dát práva 777 - čtení, zápis, spuštění všemi uživateli. Jinak většinou upload nefunguje, protože jsi vlastník sice ty, ale nahrává to tam servr... ;)
ono PHPčko není zas ta složité. Opakuje se tam pořád dokola pár funkcí, vijímečně hledáš nějakou jinou... všechno je to o podmínkách, cyklech a výpisech. Jde jen o to co chceš aby to dělalo... :)
DarkMeni
Profil *
Vau, takže se dá v PHP i "kreslit"? :D To sem až dodnes nevěděl, a ta dynamická komunikace s databází se píše v jakém jazyce? Třeba se někdo má registrovat, ale jméno které si vybral by už bylo zabrané, a buď mu to stránka poví až po odeslání a tím bude muset vyplňovat registraci znovu a třeba že bude mít smůlu zase a nebo se "něčím něco" připojí k databázi (bez přenačítání) a zjistí si jestli to není zabrané. Nevíš náhodou jak se to má správně udělat? Napadalo mě několik možností ale příjdou mi moc pomalé:
- Iframem
- JavaScriptovým polem (nezabezpečené)
- schovaným Iframem a automatickým refreshem
A zase k tématu: V příspěvku [#6] -> Tohle to uloží jako soubor php, existuje něco co by takle upravený obrázek dokázala už uložit jako obrázek?
colorshock
Profil
zkoušel jsem ten script ZDE , Ale pokud dám vložit, tak se to přesměruje na uploadovan obrázek, který se nezobrazí.. jakto?
gabbko
Profil
Rellik:
Tady máš celou ukázku v provozu:
http://fotorellik.profitux.cz/upload.php.zip


ĎAKUJEM PEKNE FUNGUJE TO SKVELE PRESNE TAKE NIECO SOM POTREBOVAL...... ESTE RAZ DAKUJEM
fazoltom
Profil
Zdravím, bylo by možné prosím obnovit linky nebo zaslat ukázky či kód na mail?

Díky

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