php 图片处理 组件,php 图片处理

//合成图片(加水印)

function img_water_mark($srcImg, $waterImg, $savename, $savepath='public/images/wxqrcode', $positon=3, $alpha=100)

{

//$savename=time().'.jpg';

$temp = pathinfo($srcImg);

$name = $temp['basename'];

$path = $temp['dirname'];

$exte = $temp['extension'];

$savename = $savename ? $savename : $name;

$savepath = $savepath ? $savepath : $path;

$savefile = $savepath .'/'. $savename;

$srcinfo = @getimagesize($srcImg);

if (!$srcinfo) {

return -1; //原文件不存在

}

$waterinfo = @getimagesize($waterImg);

if (!$waterinfo) {

return -2; //水印图片不存在

}

$srcImgObj = image_create_from_ext($srcImg);

if (!$srcImgObj) {

return -3; //原文件图像对象建立失败

}

$waterImgObj = image_create_from_ext($waterImg);

if (!$waterImgObj) {

return -4; //水印文件图像对象建立失败

}

switch ($positon) {

//1顶部居左

case 1: $x=$y=0; break;

//2顶部居右

case 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0; break;

//3居中

case 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2; break;

//4底部居左

case 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1]; break;

//5底部居右

case 5: $x = $srcinfo[0]-$waterinfo[0]; $y = $srcinfo[1]-$waterinfo[1]; break;

default: $x=$y=0;

}

imagecopymerge($srcImgObj, $waterImgObj, $x, $y, 0, 0, $waterinfo[0], $waterinfo[1], $alpha);

switch ($srcinfo[2]) {

case 1: imagegif($srcImgObj, $savefile); break;

case 2: imagejpeg($srcImgObj, $savefile); break;

case 3: imagepng($srcImgObj, $savefile); break;

default: return -5; //保存失败

}

imagedestroy($srcImgObj);

imagedestroy($waterImgObj);

return $savefile;

}

//创建图片

function image_create_from_ext($imgfile)

{

$info = getimagesize($imgfile);

$im = null;

switch ($info[2]) {

case 1: $im=imagecreatefromgif($imgfile); break;

case 2: $im=imagecreatefromjpeg($imgfile); break;

case 3: $im=imagecreatefrompng($imgfile); break;

}

return $im;

}

//创建大小

function imagesize($pathimg){

//图片的等比缩放

//因为PHP只能对资源进行操作,所以要对需要进行缩放的图片进行拷贝,创建为新的资源

$src=imagecreatefromjpeg($pathimg);

//取得源图片的宽度和高度

$size_src=getimagesize($pathimg);

$w=$size_src['0'];

$h=$size_src['1'];

//指定缩放出来的最大的宽度(也有可能是高度)

$max=150;

//根据最大值为300,算出另一个边的长度,得到缩放后的图片宽度和高度

if($w > $h){

$w=$max;

$h=$h*($max/$size_src['0']);

}else{

$h=$max;

$w=$w*($max/$size_src['1']);

}

//声明一个$w宽,$h高的真彩图片资源

$image=imagecreatetruecolor($w, $h);

//关键函数,参数(目标资源,源,目标资源的开始坐标x,y, 源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)

imagecopyresampled($image, $src, 0, 0, 0, 0, $w, $h, $size_src['0'], $size_src['1']);

//告诉浏览器以图片形式解析

// header('content-type:image/png');

// imagepng($image);

$timestamp = time();

imagejpeg($image, "$timestamp.jpg");

//销毁资源

imagedestroy($image);

return $timestamp.'.jpg';

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值