當前位置:首頁 » 編程語言 » phpgd水印

phpgd水印

發布時間: 2023-08-17 04:52:38

1. php中GD庫是做什麼用的

  • GD庫,是php處理圖形的擴展庫,GD庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。

  • 在網站上GD庫通常用來生成縮略圖,或者用來對圖片加水印,或者用來生成漢字驗證碼,或者對網站數據生成報表等。在PHP處理圖像,可使用GD庫,而GD庫開始時是支持GIF的,但由於GIF使用了有版權爭議的LZW演算法,會引起法律問題,於是從 GD 庫 1.6 版起所有的 GIF 支持都移除了,但是又在 GD 庫 2.0.28 版起又加了回來。如果使用二者之間版本的 GD 庫時 GIF 相關函數不可用。

  • 安裝與配置

  • 編輯

  • 如果是 win 的伺服器,比較簡單,步驟如下:

  • 1. 用dos命令(也可以手動操作,拷貝dlls文件夾里所有dll文件到system32目錄下) c:phpdlls*.dll c:windowssystem32

  • 2. 打開php.ini

  • 設置extension_dir = "c:/php/extensions/";

  • 3. 在「;extension=php_gd2.dll」一行,把extension前面的分號去掉,如果沒有php_gd2.dll,php_gd.dll也一樣,保證確實存在這一文件c:/php/extensions/php_gd2.dll.

  • linux伺服器上配置方法:

  • yum install php-gd* #適用於32bit操作系統安裝命令;

  • yum install php-gd.x86_64 #適用於64bit操作系統安裝命令;

2. imagefttext生成水印怎麼保存 php的

使用imagepng()/imagejpeg()/imagegif()函數;
使用這幾個函數時添加第二個參數(你想保存的圖片完整路徑),它就會根據這個路徑生成圖片文件並且保存到該路徑下。比如:
$im=imagecreatefrompng("1.png"); //取出原圖
$hb=imagecolorallocate($im,0,0,0);
imagettftext($im,50,0,40,150,$hb,"STXINGKA.TTF","兄弟連lamp156"); //加水印
imagepng($im,"images/water1.png"); //保存水印圖到本文件夾下images文件夾,水印圖命名為water1.png
imagedestroy($im);
//由於是保存圖片而非顯示圖片,所以header("content-type:image/png");是不需要的

3. php如何實現水印平鋪

代碼如下:
imagick代碼:
<?php
$image = new imagick('logo.jpg');
$im = new imagick();
$im->newimage( 140, 80, new imagickpixel( "none" ) );
$draw = new imagickdraw();
$draw->setfillcolor(new imagickpixel( "grey" ));
$draw->setgravity(imagick::gravity_northwest);
$draw->annotation(10,10 ,'right');
$draw->setgravity(imagick::gravity_southeast);
$draw->annotation(5,15 ,'right');
$im->drawimage( $draw);
$image = $image->textureimage($im);
$image->compositeimage($image,imagick::composite_,0,0);
header( "content-type: image/{$image->getimageformat()}" );
$image->writeimage('wmark_text_tiled.jpg');
$image->clear();
$image->destroy();
?>

4. php如何設置,上傳圖片水印透明度

其實你這個問題很好解決,可能你對gd庫函數不是太了解.想要調整水印可以使用imagemerge()這個函數.它最後一個函數就是調節alpha透明度的,

boolimagemerge(resource$dst_im,resource$src_im,int$dst_x,int$dst_y,int$src_x,int$src_y,int$src_w,int$src_h,int$pct)

當 pct = 0 時,實際上什麼也沒做,當為 100 時對於調色板圖像本函數和 image() 完全一樣,它對真彩色圖像實現了 alpha 透明。

<?php
/**
*();
*bySinaSalek
*
*BugfixbyRalphVoigt(bugwhichcausesit
*toworkonlyfor$src_x=$src_y=0.
*Also,.)
*08-JAN-2011
*
**/
functionimagemerge_alpha($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h,$pct){
//creatingacutresource
$cut=imagecreatetruecolor($src_w,$src_h);

//
image($cut,$dst_im,0,0,$dst_x,$dst_y,$src_w,$src_h);

//
image($cut,$src_im,0,0,$src_x,$src_y,$src_w,$src_h);

//
imagemerge($dst_im,$cut,$dst_x,$dst_y,0,0,$src_w,$src_h,$pct);
}

?>

5. php如何實現自動加水印

加水印邏輯有兩種

一種是上傳直接加水印

另一種是利用偽靜態將圖片訪問重定向到處理程序,臨時加水印緩存並輸出

php處理圖片加水印可以使用gd庫中的相關函數

以下為臨時手打代碼,可以按此思路優化,有問題可以聯系本人

//此處需根據上傳的圖片格式使用對應函數實例化圖片
$img=imagecreatefromjpg($imgurl);
//根據水印圖片路徑實例化水印
$waterImg=imagecreatefrompng($waterpath);
//獲取原圖及水印圖片尺寸,用以計算是否需要縮放及放置位置
list($width,$height,$type,$attr)=getimagesize($imgurl);
list($waterw,$waterh,$type,$attr)=getimagesize($waterpath);
$scale=1;
$waterReleaseW=$waterw;
$waterReleaseH=$waterh;
if($waterReleaseW>$width*.5){
$scale=$width*.5/$waterw;
$waterReleaseW=$width*.5;
$waterReleaseH=$waterh*$scale;
}
if($waterReleaseH>$height*.5){
$scale*=$height*.5/$waterh;
$waterReleaseH=$height*.5;
$waterReleaseW=$waterw*$scale;
}

//將水印圖片拷貝到原圖指定位置(此示例為右下角)
imageresized($img,$waterImg,
$width-$waterReleaseW-10,$height-$waterReleaseH-10,
0,0,
$width-10,$height-10,
$waterw,$waterh);
//銷毀水印圖片實例
imagedestroy($waterImg);

//水印後圖片保存
imagejpeg($img,$newpath);

6. php 圖片添加logo水印

imagealphablending()函數 配合 image()可達到去掉背景顏色的效果

註:水印本身必須是 透明底色的png格式

下圖為實際效果圖:

7. php利用gd2給圖片加水印如何解決水印中文亂碼

PHP目前對中文支持並不是很好要用中文建議用圖片水印

8. PHP如何根據圖片色階不同添加水印

在使用php編程的時候, 很多時候需要對上傳的圖片加水印,來確定圖片版權和出處. 但是,一般情況下加水印的位置是圖片的右下角, 但是,不同圖片的色階不同,有時候我們 圖片的水印和圖片本身色階相同,就會造成水印不明顯.
下面這段代碼可以實現自動識別圖片的色階,更加色階差來添加圖片的水印,這樣可以避免水印和圖片色階一樣的弊端.
<?php
function add_wm($nmw_water, $src_file, $output_file, $x, $y) {
if(file_exists($output_file))
return;
$w1 = MagickGetImageWidth($nmw_water);
$h1 = MagickGetImageHeight($nmw_water);
$nmw =NewMagickWand();
MagickReadImage($nmw, $src_file);
// 默認的加水印位置調整
$lt_w = 50;
$lt_h = 50;
if($x == 0){
$w = MagickGetImageWidth($nmw);
$h = MagickGetImageHeight($nmw);
$x = $w;
$y = $h;
}else{
// 根據具體情況調整
$lt_w = 30;
$lt_h = 40;
}
MagickCompositeImage($nmw, $nmw_water, MW_OverCompositeOp, $x - $w1 - $lt_w, $y - $h1 - $lt_h);
MagickWriteImage($nmw, $output_file);
DestroyMagickWand($nmw);
}
// 還是groovy的eachFileRecurse好用啊
function add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr) {
$dp = dir($to_dir);
while($file=$dp->read()){
if($file != '.' && $file != '..'){
if(is_dir($to_dir . '/' . $file)){
mkdir($output_dir . '/' . $file);
add_wm_recurse($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $arr);
}else{
if(!array_key_exists($to_dir . '/' . $file, $arr)){
continue;
}
$sub_arr = $arr[$to_dir . '/' . $file];
if($sub_arr){
$x = intval($sub_arr[0]);
$y = intval($sub_arr[1]);
add_wm($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $x, $y);
}
}
}
}
$dp->close();
}
$to_dir = './resized';
$output_dir = './output';
// 這個是我用java的ImageIO遍歷圖片像素獲取的符合褲子顏色的區域的坐標array(posX, posY)
$arr = array(
array(50, 50)
);
$water = './water.png';
$nmw_water =NewMagickWand();
MagickReadImage($nmw_water, $water);
add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr);
DestroyMagickWand($nmw_water);
?>

補充:
PHP圖像處理模塊 MagickWand用法
MagickWand 是一個PHP的模塊,用來訪問 ImageMagick 的圖像處理庫。下面是一個使用 MagicWand 的代碼片段:
$magick_wand=NewMagickWand();
MagickReadImage($magick_wand,'rose.jpg');
$drawing_wand=NewDrawingWand();
DrawSetFont($drawing_wand,"/usr/share/fonts/bitstream-vera/Vera.ttf");
DrawSetFontSize($drawing_wand,20);
DrawSetGravity($drawing_wand,MW_CenterGravity);
$pixel_wand=NewPixelWand();
PixelSetColor($pixel_wand,"white");
DrawSetFillColor($drawing_wand,$pixel_wand);
if (MagickAnnotateImage($magick_wand,$drawing_wand,0,0,0,"Rose") != 0)
{
MagickEchoImageBlob( $magick_wand );
}
else
{
echo MagickGetExceptionString($magick_wand);
}
?>

安裝方法:
1. 下載 php_magickwand_q16_st.dll for 5.2.x
2. 將其放在PHP的擴展目錄
3. 在php.ini文件總增加 extension=php_magickwand_q16_st.dll
4. 重新啟動apache

熱點內容
源碼地帶 發布:2025-02-05 18:46:37 瀏覽:613
我的世界伺服器怎麼騎別人的頭 發布:2025-02-05 18:46:32 瀏覽:89
怎麼卸載ftp賬號 發布:2025-02-05 18:41:52 瀏覽:62
SQL指定的服務並未以 發布:2025-02-05 18:40:09 瀏覽:972
電腦連接不了伺服器什麼意思 發布:2025-02-05 18:34:46 瀏覽:355
2015版dw怎麼配置站點 發布:2025-02-05 18:33:37 瀏覽:429
php數組中重復值 發布:2025-02-05 18:16:59 瀏覽:365
分布式存儲優點 發布:2025-02-05 18:15:29 瀏覽:644
徵婚交友源碼 發布:2025-02-05 17:45:24 瀏覽:918
3nvm伺服器怎麼搭建 發布:2025-02-05 17:43:52 瀏覽:661