很多站长朋友们都不太清楚php动态加水印pdf,今天小编就来给大家整理php动态加水印pdf,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php如何实现自动加水印 2、 php动态水印 3、 我这有个已经实现了php上传图片的功能的类,但是现在还要给上传的每张图片加水印,请高手帮忙…… 4、 php mypdf 怎么指定页面添加水印 5、 如何把动态生成的php页面转化成pdf文件 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;
}
//将水印图片拷贝到原图指定位置(此示例为右下角)
imagecopyresized($img,$waterImg,
$width-$waterReleaseW-10,$height-$waterReleaseH-10,
0,0,
$width-10,$height-10,
$waterw,$waterh);
//销毁水印图片实例
imagedestroy($waterImg);
//水印后图片保存
imagejpeg($img,$newpath);
php动态水印水印本来就是图片的一部分.你还要打印,应该是要生成一张新图的.但生成新图就一定会占空间吗?你可以不保存图片的.<img src="/data/upload/help/202303/02/6a968500d4deb5c109748208450883d1.php?id=33846">,这样的可以的.打印是指web打印吗?
我这有个已经实现了php上传图片的功能的类,但是现在还要给上传的每张图片加水印,请高手帮忙……给你一个封装的图片处理的类吧!包含缩放和剪切功能!
构造方法只需要传递图片所在路径即可!对应方法及参数都有注释!
请给予最佳答案!!
<?php
class Img{
private $path;
//构造方法,初始化图片信息
function __construct($path='./imgs/'){
$this->path=rtrim($path,'/').'/';
}
/**
* 对图片进行缩放
* 参数对应:文件名 缩放后宽度 缩放后高度 缩放后图片名前缀
*/
function thumb($name,$width,$height,$pre="th_"){
if(file_exists($this->path.$name)){
$imgInfo=$this->getInfo($name);
$img=$this->getImg($name,$imgInfo);
$newSize=$this->getNewSize($name,$width,$height,$imgInfo);
$newImg=$this->getNewInfo($img,$newSize,$imgInfo);
return $this->createNewImage($newImg, $pre.$name, $imgInfo);
}else{
echo '图片'.$this->path.$name.'不存在,请检查文件名及路径是否填写正确';
}
}
//辅助图片处理,获取图片的宽、高、类型属性
private function getInfo($name){
$temp=getImageSize($this->path.$name);
$imgInfo['width']=$temp[0];
$imgInfo['height']=$temp[1];
$imgInfo['type']=$temp[2];
return $imgInfo;
}
//辅助图片处理,获取创建的图片资源
private function getImg($name,$imgInfo){
$src=$this->path.$name;
switch($imgInfo['type']){
case 1:
$img=imagecreatefromgif($src);
break;
case 2:
$img=imagecreatefromjpeg($src);
break;
case 3:
$img=imagecreatefrompng($src);
break;
}
return $img;
}
//辅助图片处理,获取创建的图片资源
private function getNewSize($name,$width,$height,$imgInfo){
$newSize['width']=$imgInfo['width'];
$newSize['height']=$imgInfo['height'];
if($width<$imgInfo['width']){
$newSize['width']=$width;
}
if($height<$imgInfo['height']){
$newSize['height']=$height;
}
if($imgInfo["width"]*$newSize["width"] > $imgInfo["height"] * $newSize["height"]){
$newSize["height"]=round($imgInfo["height"]*$newSize["width"]/$imgInfo["width"]);
}else{
$newSize["width"]=round($imgInfo["width"]*$newSize["height"]/$imgInfo["height"]);
}
print_r($newSize);
return $newSize;
}
//辅助图片处理,获取缩放的图片资源
private function getNewInfo($img,$newSize,$imgInfo){
$newImg=imagecreatetruecolor($newSize['height'],$newSize['height']);
$otsc=imagecolortransparent($img);
if($otsc >=0 $otsc <= imagecolorstotal($img)){
$tran=imagecolorsforindex($img, $otsc);
$newt=imagecolorallocate($newImg, $tran["red"], $tran["green"], $tran["blue"]);
imagefill($newImg, 0, 0, $newt);
imagecolortransparent($newImg, $newt);
}
imagecopyresized($newImg, $img, 0, 0, 0, 0, $newSize["width"], $newSize["height"], $imgInfo["width"], $imgInfo["height"]);
imagedestroy($img);
return $newImg;
}
//辅助图片处理,创建新的图片
private function createNewImage($newImg, $newName, $imgInfo){
switch($imgInfo["type"]){
case 1://gif
$result=imageGif($newImg, $this->path.$newName);
break;
case 2://jpg
$result=imageJPEG($newImg, $this->path.$newName);
break;
case 3://png
$return=imagepng($newImg, $this->path.$newName);
break;
}
imagedestroy($newImg);
return $newName;
}
/**
* 对图片加水印
* 参数对应:需水印图片 水印图片 加水印后图片名前缀
*/
function waterMark($name,$wname,$pre="wa_"){
if(file_exists($this->path.$name)){
if(file_exists($this->path.$wname)){
$info=$this->getInfo($name);
$winfo=$this->getInfo($wname);
if($p=$this->getPosition($info,$winfo)){
$img=$this->getImg($name,$info);
$wImg=$this->getImg($wname,$winfo);
imagecopy($img, $wImg, $p["x"], $p["y"], 0, 0, $winfo["width"], $winfo["height"]);
imagedestroy($wImg);
return $this->createNewImage($img,$pre.$name,$info);
}else{
echo '水印图片尺寸大于原图片尺寸';
}
}else{
echo '水印图片'.$this->path.$wname.'不存在,请检查文件名及路径是否填写正确';
}
}else{
echo '图片'.$this->path.$name.'不存在,请检查文件名及路径是否填写正确';
}
}
//辅助图片处理,获取水印图片应处坐标
private function getPosition($info,$winfo){
if($info['width']<$winfo['width']||$info['height']<$winfo['height']){
return false;
}
$x=$info['width']-$winfo['width'];
$y=$info['height']-$winfo['height'];
return array('x'=>$x,'y'=>$y);
}
/**
* 图片剪切函数
* 对应参数:原图片 X坐标 Y坐标 宽度 高度
*/
function cut($name,$x,$y,$width,$height,$pre='cx_'){
$imgInfo=$this->getInfo($name);
$img=$this->getImg($name,$imgInfo);
$newImg=imagecreatetruecolor($width,$height);
imagecopyresampled($newImg,$img,0,0,$x,$y,$width,$height,$width,$height);
return $this->createNewImage($newImg, $pre.$name, $imgInfo);
}
}
php mypdf 怎么指定页面添加水印在php中要为pdf文件添加水印,如果不想安装其他工具,想使用纯php的方式实现的话,我们可以借助开源免费的 FPDF和 FPDI 库。FPDF可以用来生成pdf文件,为pdf文件添加文字,图片等等,但是它不能读取现有的pdf文件。而FPDI则刚好可以用来读取已存在的pdf文件,并且由于这个库是从fpdf继承而来的,整合非常方便。可惜的是,免费的FPDI库还是有一点点限制,不够完美。
如何把动态生成的php页面转化成pdf文件如果是可以打印,就可以使用虚拟打印机来处理:
方法一:使用虚拟打印机pdf factory即可,而且其他格式文件只要是能够打印,选择这个虚拟打印机,都可以做成PDF文件,很简单实用;
方法二:用其他虚拟打印机转成PDF文件。
方法三:使用专门的转换软件,把文件转成PDF文件。
实在不能打印,还可以截屏嘛,然后按照下面的方法做出PDF的:
方法一:使用虚拟打印机pdf factory即可,而且其他格式文件只要是能够打印,选择这个虚拟打印机,都可以做成PDF文件,很简单实用;
方法二:使用FreePic2Pdf软件,进行批量转换;
方法三:用其他虚拟打印机转成PDF文件。
关于php动态加水印pdf的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php动态加水印pdf php动态网页制作教程的详细内容...