Autor Zpráva
piwik
Profil
Zdravim,

Potrebujem spravit watermark na image, ktory sa uploadne ... a potom ten image vlozit do databazy...vsetko funguje, okrem pridania watermarku...prosim pomozte...prikladam kod:

if(isset($_POST['upload0']) && $_FILES['userfile0']['size'] > 0)
{
$fileName = $_FILES['userfile0']['name'];
$tmpName  = $_FILES['userfile0']['tmp_name'];
$fileSize = $_FILES['userfile0']['size'];
$fileType = $_FILES['userfile0']['type'];

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

$rozmery = GetImageSize($tmpName);
$vyska = $rozmery[1];
$sirka = $rozmery[0];

if(!get_magic_quotes_gpc())
{
    //$fileName = addslashes($fileName);
}

$watermark = imagecreatefromgif('watermark.gif');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($tmpName);
$size = getimagesize($tmpName);
//vypocitame polohu watermarku
$dest_x = $size[0] - $watermark_width - 2;
//-5 znamena posun o 5 pixelov po osi x a y
$dest_y = $size[1] - $watermark_height - 2;
//vytvorime novy obrazok
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
//a ulozime uz s nahratym watermarkom
imagejpeg($image,$tmpName);
imagedestroy($image);
imagedestroy($watermark);

$query = "INSERT INTO byty_foto_hlavne (id,name,type,size,vyska,sirka,content) ".
"VALUES ('$id1','$fileName','$fileType','$fileSize','$vyska','$sirka','$image') ON DUPLICATE KEY UPDATE name='$fileName',type='$fileType',size='$fileSize',vyska='$vyska',sirka='$sirka',content='$image'";

mysql_query($query) or die('Error, query failed');

echo "<br>File $fileName uploaded<br>";
//echo ' <script>window.location.href="http://localhost/almareal/admin/template.php?page=fotky";</script> ';
}

za pomoc dakujem

Moderátor nightfish: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.

Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).

Moderátor nightfish: Titulek „problem s watermarkom, poradte prosim“ zcela zbytečně obsahuje bezvýznamnou frázi „poradte prosim“.
Alphard
Profil
piwik:
vsetko funguje, okrem pridania watermarku
Opravdu? Jestli se dobře dívám, v $image (kterou ukládáte do databáze) je resource obrázku. Jak ten obrázek potom vypisujete?

Kromě toho je tam několik dalších nesmyslů.
Řádky 25 a 26, proč? Na 25. něco vytvoříte a pak to hned bez užitku přepíšete.
Řádky 13 a 27, zbytečně 2x zjišťujete velikost jednoho obrázku.
Řádek 35, ukládáte obrázek do temptu.
Řádky 8 až 11 nikde nepoužíváte.
Řádek 1, lze použít funkci is_uploaded_file().

To jsem si všiml na první pohled. Pokud jde o ten watermark, nevidím v tom problém. Zkusil jsem to očesat pro testování
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
header('content-type: image/jpeg');
imagejpeg($image);
a funguje dle očekávní.
piwik
Profil
Alphard:


vdaka za odpoved....inak tuto sa nachadza rovnaky kod http://articles.sitepoint.com/article/watermark-images-php


chcel som sa spytat, spravnu premennu ukladam do databazy ako image? ... v premennej image by mal byt samotny content...cize obrazok
piwik
Profil
tak upravil som skript....

if(isset($_POST['upload0']) && $_FILES['userfile0']['size'] > 0)
{
$fileName = $_FILES['userfile0']['name'];
$tmpName  = $_FILES['userfile0']['tmp_name'];
$fileSize = $_FILES['userfile0']['size'];
$fileType = $_FILES['userfile0']['type'];
$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

$rozmery = GetImageSize($tmpName);
$vyska = $rozmery[1];
$sirka = $rozmery[0];

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}

$watermark = 'watermark.gif';
$dest = imagecreatefromjpeg($tmpName);
$src = imagecreatefromgif($watermark);

list($width, $height, $type, $attr)=getimagesize($tmpName);
list($markwidth, $markheight, $type1, $attr1)=getimagesize($watermark);

$opacity = 30;
imagecopymerge($dest, $src, ($width-$markwidth)>>1, ($height-$markheight)>>1, 0, 0, $markwidth, $markheight, $opacity);

if ($fileName<>'') {
imagejpeg ($dest, $fileName, 100);
}

header('Content-Type: image/jpeg');
imagejpeg($dest);

//imagedestroy($dest);
//imagedestroy($src);

$query = "INSERT INTO byty_foto_hlavne (id,name,type,size,vyska,sirka,content) ".
"VALUES ('$id1','$fileName','$fileType','$fileSize','$vyska','$sirka','$content') ON DUPLICATE KEY UPDATE name='$fileName',type='$fileType',size='$fileSize',vyska='$vyska',sirka='$sirka',content='$content'";

mysql_query($query) or die('Error, query failed');

//echo "<br>File $fileName uploaded<br>";
//echo ' <script>window.location.href="http://localhost/almareal/admin/template.php?page=fotky";</script> ';
}




momentalne sa mi ulozi obrazok s watermarkom na disk...ale ja ho potrebujem ulozit do databazy...prosim pomozte
Alphard
Profil
Funkce imagejpeg() bohužel neumožňuje předání souboru do proměnné. Buď můžete soubor z disku znovu načíst a uložit do databáze, nebo ho zachytit bufferovacími funkcemi a uložit.
Pak se ale ještě nabízí otázka, jestli je vhodné ukládat obrázky do databáze. Často se to řeší tak, že jsou v databázi informace o obrázcích a adresy obrázků ve filesystému, ale samotné souboru jsou uložené mimo databázi.
piwik
Profil
dakujem za kratky navod, skusim to.

jj, nad tym som rozmyslal, ale zda sa mi jednoduchsie obrazky ukladat do databazy....uz je to tak poriesene, tak menit to nebudem.
Keeehi
Profil
piwik:
U jedné aplikace jsem se také rozhodl ukládat obrázky do DB (nejspíš to už nikdy znovu neudělám). Musíš si dát pozor na nastavení indexů. Všem sloupcům, podle kterých pak budeš chtít vyhledávat musíš nastavit index, jinak to bude strašně pomalé.

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