Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP ja GD png watermark märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
atari_
HV kasutaja
atari_

liitunud: 09.10.2004




sõnum 27.02.2011 07:13:58 PHP ja GD png watermark vasta tsitaadiga

On kaks pilti. suur ja väike. Mõlemal on olemas läbipaistvust reguleeriv alpha kanal.
Idee on panna väike suure peale watermarkiks

kui teha nii:

$taust = imagecreatefrompng('mingifail.png'); // suurem pilt
$watermark = imagecreatefrompng('watermark.png'); // väiksem pilt - watermark
imagealphablending($taust, true);

// watermark tausta üles vasakusse nurka
imagecopy($taust, $watermark , 0, 0, 0, 0, imagesx($taust), imagesy($taust));

//salvesta tulemus
imagesavealpha($taust, true);
imagepng($taust, '/watermarkiga_taust.png');
imagedestroy($taust);

on tulemuseks see ,et kõik watermarkist paremale ja alla jääv osa on lihtslat must. (Täidab selle alla, kuhu pealmine pilt ei ulatunud, 'tühjaga' mil omakorda pole alpha kanalit ?)

üheks lahenduseks jõudsin selleni, et teha uus tühi pilt - sama suurusega mis alumine. Panna väiksem pilt alguses sinna peale, kõik see ala kus alphat pole, täita alphaga ja siis see vahepealne pilt omakorda panna tausta peale..

ehk:

$taust = imagecreatefrompng('mingifail.png'); // suurem pilt
$watermark = imagecreatefrompng('watermark.png'); // väiksem pilt - watermark
imagealphablending($taust, true);

//uus tühi pilt
$vahepealne = imagecreatetruecolor(imagesx($taust), imagesy($taust));
imagealphablending($vahepealne , false);
imagecopy($vahepealne, $watermark, 0, 0, 0, 0, imagesx($taust), imagesy($taust));
$värv = imagecolorallocatealpha($vahepealne, 255, 255, 255, 127);
imagefill($vahepealne, imagesx($taust), imagesy($taust), $värv); // täida alumine parem äär "alpha värviga"

// watermark tausta üles vasakusse nurka
imagecopy($taust, $watermark , 0, 0, 0, 0, imagesx($taust), imagesy($taust));

//salvesta tulemus
imagesavealpha($taust, true);
imagepng($taust, '/watermarkiga_taust.png');
imagedestroy($taust);


..aga siiski jäi kripeldama, et äkki saab kuidagi ilma sellise vahe astmeta?

_________________
Kommentaarid: 94 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 80
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 27.02.2011 11:35:59 vasta tsitaadiga

header('content-type: image/jpeg');
$watermark = imagecreatefrompng('PimpPikoAlp.png');
$pilt="./album/start(2).JPG";
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 
$image = imagecreatetruecolor($watermark_width, $watermark_height); 
$image = imagecreatefromjpeg($pilt); 
$size = getimagesize($pilt); 
$dest_x = $size[0] - $watermark_width - 5; 
$dest_y = $size[1] - $watermark_height - 5;
$bg_color = imagecolorat($watermark, 1, 1);
imagecolortransparent($watermark, $bg_color);
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height,30); 
imagejpeg($image); 
imagedestroy($image); 
imagedestroy($watermark); 

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 27.02.2011 15:44:32 vasta tsitaadiga

atari_, kui sa just ei soovi õppe eesmärgil seda teha, siis kasuta http://phpthumb.gxdlabs.com/
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP ja GD png watermark
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.