当前位置:首页 » 编程语言 » php图片文字水印

php图片文字水印

发布时间: 2022-02-23 12:17:31

⑴ 谁有能用的php给图片加文字水印,最好有使用方法,注意:一定是能用的,功能强不强大另说

<?php

/*PHP图片加文字水印类库

QQ:3697578482 伤心的歌

该类库暂时只支持文字水印,位置为右下角,颜色随机

调用方法:
1、在需要加水印的文件顶部引入类库:
include_once 'imageClass.php';
2、声明新类:
$tpl=new image_fu;
3、给图片水印提供参数:
$tpl->img(图片路径,水印文字,字体路径,字体大小,字体角度);
比如:$tpl->img('abc.jpg','这是水印文字','ziti.ttf',30,0)

*/

class image_fu{

private $image;
private $img_info;
private $img_width;
private $img_height;
private $img_im;
private $img_text;
private $img_ttf='';
private $img_new;
private $img_text_size;
private $img_jd;

function img($img='',$txt='',$ttf='',$size=12,$jiao=0){
if(isset($img)&&file_exists($img)){//检测图片是否存在
$this->image =$img;
$this->img_text=$txt;
$this->img_text_size=$size;
$this->img_jd=$jiao;
if(file_exists($ttf)){
$this->img_ttf=$ttf;
}else{
exit('字体文件:'.$ttf.'不存在!');
}
$this->imgyesno();
}else{
exit('图片文件:'.$img.'不存在');
}
}

private function imgyesno(){

$this->img_info =getimagesize($this->image);
$this->img_width =$this->img_info[0];//图片宽
$this->img_height=$this->img_info[1];//图片高

//检测图片类型
switch($this->img_info[2]){
case 1:$this->img_im = imagecreatefromgif($this->image);break;
case 2:$this->img_im = imagecreatefromjpeg($this->image);break;
case 3:$this->img_im = imagecreatefrompng($this->image);break;
default:exit('图片格式不支持水印');
}

$this->img_text();
}

private function img_text(){

imagealphablending($this->img_im,true);

//设定颜色
$color=imagecolorallocate($this->img_im,rand(0,255),rand(0,255),rand(0,255));
$txt_height=$this->img_text_size;
$txt_jiao=$this->img_jd;
$ttf_im=imagettfbbox($txt_height,$txt_jiao,$this->img_ttf,$this->img_text);
$w = $ttf_im[2] - $ttf_im[6];
$h = $ttf_im[3] - $ttf_im[7];
//$w = $ttf_im[7];
//$h = $ttf_im[8];

unset($ttf_im);

$txt_y =$this->img_height-$h;
$txt_x =$this->img_width-$w;
//$txt_y =0;
//$txt_x =0;

$this->img_new=@imagettftext($this->img_im,$txt_height,$txt_jiao,$txt_x,$txt_y,$color,$this->img_ttf,$this->img_text);

@unlink($this->image);//删除图片
switch($this->img_info[2]) {//取得背景图片的格式
case 1:imagegif($this->img_im,$this->image);break;
case 2:imagejpeg($this->img_im,$this->image);break;
case 3:imagepng($this->img_im,$this->image);break;
default: exit('水印图片失败');
}

}

//显示图片
function img_show(){echo '<img src="'.$this->image.'" border="0" alt="'.$this->img_text.'" />';}

//释放内存
private function img_nothing(){
unset($this->img_info);
imagedestroy($this->img_im);
}

}

?>

⑵ PHP给图片加水印的思想是什么

贴个php的图片处理类 你可以自己研究下 共同进步 呵呵

/*
此类包含以下功能
A.生成缩略图
B.给图片添加文字水印(包括中文)
C.将指定的图片旋转90度/180度/270度,并保存至文件
D.将图片水平/垂直翻转,并保存至文件
E.在线裁剪图片任意部分矩形(正在编写之中)
具体目标效果暂时可以参考 http://yananzb.com/cut/cut.htm
期待您的响应

成员函数说明
---------------------------------------------------------------------------------------------
public void CImage::__construct(string $src_image_file)
功能:类CImage的构造函数
参数
$src_image_file 字符串,源图片文件名 注意,目前只支持gif,png,jpeg,jpg格式,这是GD库的限制,并非本程序的局限
---------------------------------------------------------------------------------------------
public bool CImage: thumb($image_dist,$x)
功能:根据源图片生成缩略图,并保存至文件
$image_dist 字符串 目标缩略图片路径及文件名 如 /File/th.jpg
$x 整型 目标缩略图片的尺寸限制即当原始图片的宽大于高时,那么新的缩略图的宽为$x,反之高为$x
---------------------------------------------------------------------------------------------
public bool image_press($image_dist,$str,$font="simkai.ttf")

函数功能:
图片生成水印并保存新图片至目标文件
参数说明:
$image_dist 字符串 目标图片名
$str 字符串 要写入到图片水印的字符串
$font 字符串 合法的系统字体名或WEB目录中正确的字体文件名
---------------------------------------------------------------------------------------------
public bool rotate($image_dist,$angle)
函数功能:
将源图片旋转一定角度并将新图片保存至文件
参数说明:
$image_dist 字符串 目标图片文件名
$angle 整数 要旋转的角度 只能是90或180或270度
---------------------------------------------------------------------------------------------
public bool rotate_h($image_dist)
函数功能:
将源图片水平翻转,并将新图片保存至文件
参数说明:
$image_dist 字符串 目标图片文件名
---------------------------------------------------------------------------------------------
public bool rotate_v($image_dist)
函数功能:
将源图片垂直翻转,并将新图片保存至文件
参数说明:
$image_dist 字符串 目标图片文件名
---------------------------------------------------------------------------------------------
使用范例:
$p=new CImage("s.jpg"); //创建一个图片处理对象
$p->thumb("thumb.jpg",300); //生成缩略图 限制尺寸为300,保存为thumb.jpg
$p->rotate("rt.jpg",90); //旋转90度,并保存为rt.jpg,类似地,你可以将90换成180,270进行旋转
$p->rotate_h("h.jpg"); //水平翻转
$p->rotate_v("v.jpg"); //垂直翻转

*/
class CImage{
var $src_image;
var $width;
var $height;
var $image_type;
var $img;
var $src_x;
var $src_y;

function __construct($image_file)
{
$info=GetImageSize($image_file);
$this->src_image=$image_file;
$this->width=$info[0];
$this->height=$info[1];

switch($info[2])
{
case 1:
$this->image_type="gif";
break;
case 2:
$this->image_type="jpeg";
break;
case 3:
$this->image_type="png";
break;
default:
return false;
//echo("Unsurport Image type.");
break;
} //swith end
//echo "ok";
$new_function='ImageCreateFrom'.ucfirst($this->image_type);
$this->img=$new_function($this->src_image);
$this->src_x=ImageSX($this->img);
$this->src_y=ImageSY($this->img);
}
function thumb($image_dist,$x) //$x为新图的限制边的尺寸
{
$src_x=ImageSX($this->img);
$src_y=ImageSY($this->img);
$scale=min($x/$src_x,$x/$src_y);

if($scale<1)
{
$new_x=floor($scale*$src_x);
$new_y=floor($scale*$src_y);
$img_tmp=ImageCreateTrueColor($new_x,$new_y); //set the size of Canvas for the new Image
ImageCopyResampled($img_tmp,$this->img,0,0,0,0,$new_x,$new_y,$src_x,$src_y); //Resampled
ImageDestroy($this->img);
$new_function="Image".ucfirst($this->image_type);

return $new_function($img_tmp,$image_dist);
}
} // thumb end

//给图片生成文字水印
function image_press($image_dist,$str,$font="simkai.ttf") {
$str=iconv("GB2312","utf-8",$str);
$blue=ImageColorAllocate($this->img,90,255,255);
$white=ImageColorAllocate($this->img,255,0,0);
ImageTTFText($this->img,20,0,$this->src_x/2/2,$this->src_y-80,$white,$font,$str);
$new_function="Image".ucfirst($this->image_type);
return $new_function($this->img,$image_dist);
}

function rotate($image_dist,$angle)
{
$img_tmp=null;
$new_function="Image".ucfirst($this->image_type);
if(($angle!=90)&&($angle!=180)&&($angle!=270))
{
echo("Un-valid angle on calling CImage::rotate(\$image_dist,\$angle) .<p>The valid angle must be 90 or 180 or 270.");
return false;
}

if(($angle==90)||($angle==270))
{
$img_tmp=ImageCreateTrueColor($this->src_y,$this->src_x);
}
else
{
$img_tmp=ImageCreateTrueColor($this->src_x,$this->src_y);
}

switch($angle)
{
case 90:
for($i=0;$i<$this->src_x;$i++)
{
for($j=0;$j<$this->src_y;$j++)
{
ImageSetPixel($img_tmp,$this->src_y-$j-1,$i,ImageColorAt($this->img,$i,$j));
}
}
return $new_function($img_tmp,$image_dist);
break;

case 180:
for($i=0;$i<$this->src_x;$i++)
{
for($j=0;$j<$this->src_y;$j++)
{
ImageSetPixel($img_tmp,$this->src_x-$i-1,$this->src_y-$j-1,ImageColorAt($this->img,$i,$j));
}
}
return $new_function($img_tmp,$image_dist);
break;

case 270:
for($i=0;$i<$this->src_x;$i++)
{
for($j=0;$j<$this->src_y;$j++)
{
ImageSetPixel($img_tmp,$j,$this->src_x-$i-1,ImageColorAt($this->img,$i,$j));
}
}
return $new_function($img_tmp,$image_dist);
break;
} //end switch

} //end rotate

function rotate_h($image_dist)
{
$new_function="Image".ucfirst($this->image_type);
$img_tmp=ImageCreateTrueColor($this->src_x,$this->src_y);
ImageCopyResampled($img_tmp,$this->img,0,0,$this->src_x-1,0,$this->src_x,$this->src_y,-$this->src_x,$this->src_y); //水平翻转
return $new_function($img_tmp,$image_dist);
}

function rotate_v($image_dist)
{
$new_function="Image".ucfirst($this->image_type);
$img_tmp=ImageCreateTrueColor($this->src_x,$this->src_y);
ImageCopyResampled($img_tmp,$this->img,0,0,0,$this->src_y-1,$this->src_x,$this->src_y,$this->src_x,-$this->src_y);
return $new_function($img_tmp,$image_dist);
}
} //end CImage

⑶ php给图片加文字水印

arrayimagettftext(resource$image,float$size,float$angle,int$x,int$y,int$color,string$fontfile,string$text)

⑷ php文字水印,水印会根据图片的大小自动变化

这个好像有点复杂哦
一般水印都是用GD库函数实现的,你可以把上传的图片长宽取出来,这应该不难吧,然后根据需要在你实现水印的函数里根长宽参数关联,应该就能实现。

⑸ php添加文字和图片水印问题。

//可能是你的编码设置有问题,在配置文件中设置编码为UTF-8或者别的,反正和你其它地方编码统一
header('Content-Type:text/html;charset=utf-8');

⑹ 一个关于稍微修改一下PHP图片加水印的程序代码

通过调用imagesx()和imagesy()函数,获得$nimage和$simage的长和宽。要让$simage被画在$niamge的右下角,只要在调用image()的时候将dst_x和dst_y参数值设为两者width之差和height之差就可以了。

⑺ 求在图片上一次添加多个水印的php代码

我这里有java版本的代码,其实跟PHP差不多少的,你可以看看。
1. 添加文字水印的程序:
http://www.cxybl.com/html/bcyy/java/201108232444.html
2. 添加图片水印的程序:
http://www.cxybl.com/html/bcyy/java/201108232443.html

⑻ php能不能在图片加水印的时候给文字加边框! - 技术问答

有点不明白你的意思你到底是要什么效果呢?如果想要带边框的文字,那你直接做个图片,上面写上文字,做上边框,然后用这个图片作为水印图片不久行了吗

⑼ PHP给图片添加文字水印

请确认C:\WINDOWS\Fonts\simkai.ttf';是否支持中文
或不要转换
$str = iconv('GB2312','UTF-8',$str);
直接
$str=$str;

热点内容
java数据导入excel 发布:2025-01-08 13:25:38 浏览:626
工作站服务器的视频ip怎么看 发布:2025-01-08 13:09:15 浏览:652
唱吧上传卡住 发布:2025-01-08 12:52:23 浏览:531
烤鸡存储 发布:2025-01-08 12:50:16 浏览:793
android获取电量 发布:2025-01-08 12:44:42 浏览:761
samp服务器如何设置ip直播 发布:2025-01-08 12:35:20 浏览:123
5七的算法 发布:2025-01-08 12:30:59 浏览:447
linuxsvn配置 发布:2025-01-08 12:19:11 浏览:381
苹果扁头耳机如何在安卓手机上用 发布:2025-01-08 12:17:37 浏览:110
为什么解绑卡还要密码 发布:2025-01-08 12:13:51 浏览:74