php的gd库处理大的图片,PHP的gd库处理图片

gd库为图片加文字水印和图片输出

$number = $result['certno'];//设置水印内容

$file = './Uploads/certs/' . $number . '.jpg';

if(!is_file($file)){

$src = './template/public/img/zhengshu.jpg';//定义图片地址

$info = getimagesize($src);//获取图片信息

$type = image_type_to_extension($info[2], false);//通过编号获取图片类型

$fun = "imagecreatefrom".$type;//在内存中创建一样的图像

$image = $fun($src);//图片复制到内存

$font = './msyh.ttf';//设置字体路径

$fontbd = './msyhbd.ttf';//设置字体路径

$content = $result['authname'];//设置水印内容

$website = $result['auth_domains'];//设置水印内容

//求出水印内容在使用字体下在图片的四个边框的xy坐标

$version_fontarea1 = ImageTTFBBox(25,0,$fontbd,$version);

$content_fontarea1 = ImageTTFBBox(25,0,$font,$content);

$website_fontarea1 = ImageTTFBBox(12,0,$font,$website);

$width = $info[0];//获取图片宽度

//求出内容应该设置在图片中的位置(y左边我是自己一点点试的...x坐标是让水印内容两侧距离相等)

$version_x = ($width - ($version_fontarea1[2] - $version_fontarea1[0])) / 2;

$content_x = ($width - ($content_fontarea1[2] - $content_fontarea1[0])) / 2;

$website_x = ($width - ($website_fontarea1[2] - $website_fontarea1[0])) / 2;

$color = imagecolorallocatealpha($image, 75, 75, 75, 0);//设置颜色

imagettftext($image, 11, 0, 105, 80, $color, $font, $number);

imagettftext($image, 25, 0, $version_x, 350, $color, $fontbd, $version);

imagettftext($image, 25, 0, $content_x, 520, $color, $font, $content);

imagettftext($image, 12, 0, $website_x, 560, $color, $font, $website);

//输出图片

$fun = "image".$type;

$fun($image, $file , 80);

imagedestroy($image);

}

$data = file_get_contents($file);

代码中依然存在很大问题,因为这样的做法,意味着有多少个result,就会在文件夹中生成多少张图片。没有找到gd库直接从内存中获取图片内容的方法,迫不得已用这个方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值