php Tip #2
Bieži gadās nepieciešamība bildes aizsargāt ar tā saucamo ūdenszīmi, piedāvāju īsu risinājumu
Vienīgā piezīme ūdenszīmes attēls jāveido PNG 24 bitu savādāk caurspīdīgums nebūs :)
tātad piedāvāju šo nelielo kodu:
$file_data = 'image038.jpg';
header('Content-type: image/jpeg');
$watermark = imagecreatefrompng('webdevlogo.png');
imageAlphaBlending($watermark, false);
imageSaveAlpha($watermark, true);
list($watermark_width,$watermark_height) = getimagesize('webdevlogo.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($file_data);
$size = getimagesize($file_data);
// imagecopy($image,$watermark,($size[0]-$watermark_width),0,0,0,$watermark_width,$watermark_height); # novietot logo kreisajā augšējā stūrī
// imagecopy($image,$watermark,0,0,0,0,$watermark_width,$watermark_height); # novietot logo labajā augšējā stūrī
// imagecopy($image,$watermark,0,($size[1]-$watermark_height),0,0,$watermark_width,$watermark_height); # novietot logo kreisajā apakšējā stūrī
imagecopy($image,$watermark,($size[0]-$watermark_width),($size[1]-$watermark_height),0,0,$watermark_width,$watermark_height); # novietot logo labajā apakšējā stūrī
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);Autors: Roberts Mozgis (rob)
Web izstrādātājs ar vairāku gadu pieredzi. Esmu strādājis pie daudziem interesantiem projektiem Latvijā un ārpus tās. Specializācija PHP, JavaScript, CSS, Html, kā viss ap datubāzēm.






AnetiX www 08.05.2009 | 14:33
Kods īss, tomēr dažas nianses, kam gribētos piesieties.
1) Kods atbalsta tikai jpg’as, bet dzīvē reti, kad tikai ar jpg’ām jāsastopās. Būtu jauki arī png,gif un pat bmp formāta atbalsts.
2) Kods izskatās, ka sagatavots tā, lai tiktu laists in-live, t.i, bez kešošanas, ka uz katru rekvestu parādam jpg’u maucot virsū watermarku. Sīkums, bet patīkami, ja augšā būtu variablis $saveto, kas arī pie imagejpeg tiktu padots.
3) Šāds koda fragments prasītos pēc skaisti sagatavotas funkcijas… function watermark($path,$saveto,$watermark_path,$watermark_position=”bottom”), ko tad ar vieglu copypaste un bez modifikācijām varētu ielipināt kur sirds tīko. :)
Bet tā – paldies. :)
veciic 09.05.2009 | 23:19
Watermarkot var daudz vienkaarshaak un aatraak izmantojot komandrindas programmatūru:
exec(”composite -gravity south-west watermark.png bilde.jpg bilde_ar_watermark.jpg 2>&1″);
atliek uzlikt tikai imagemagick
AnetiX www 10.05.2009 | 12:05
veciic: tam vajag attiecīgas permisijas uz servera, kā arī kaut ko papildus instalēt. :)
veciic 10.05.2009 | 20:48
tas tiesa. ja hosteetaajs atsaka papildu utiliitus instaleet, tad tas atkriit.
banesto 05.12.2009 | 20:05
ja būtu iesācējs, es neko nesaprastu.. un ko lai ar šo kodu iesāk, kā tas strādā??
šeit ir laba metode (domāta, gan wordpresam, bet var bez liekām problēmām pārveidot, pamainot direktorijas): http://wpglamour.com/how-to-watermark-all-your-uploaded-images/
jāveic izmaiņas root direktorijā esošajā .htaccess failā (vai jāuztaisa), kurā pasaka pielietot šo kodu katrai bildei, kas tiek rādīta konkrētajos folderos. kodā precīzāk var redzēt, kas un kā.
banesto 05.12.2009 | 20:07
galvenais bonuss wpglabour metodei – oriģinālās bildes netiek izbojātas.