PHP 图片水印 按照比例缩放放大

2 篇文章 0 订阅
2 篇文章 0 订阅

内容很简单,可以二次封装成类

加上判断即可配置成生产环境,贴出来只是为了方便新手学习,更加清楚流程

无论多大的图片多小的图片,水印大小都会随着图片变化而变化

<?php
//1.配置路径
$img_src  = "a.jpg"; //待加水印
$logo_src = "logo.gif"; //水印图片
$path = 'img';//保存位置

//2.建立图像
$info_img  = getimagesize($img_src);
$info_logo = getimagesize($logo_src);
$type_img  = image_type_to_extension($info_img[2], false);
$type_logo = image_type_to_extension($info_logo[2], false);

//3.获取图片宽搞
list($img_width, $img_height)   = $info_img;
list($logo_width, $logo_height) = $info_logo;

//4.内存建立图片
$fun_img  = "imagecreatefrom{$type_img}";
$fun_logo = "imagecreatefrom{$type_logo}";

//5.把要操作的图片复制到内存中
$RAM_img  = $fun_img($img_src);
$RAM_logo = $fun_logo($logo_src);

//6.比例算法
$b = ($img_width*$logo_width)/3333/$logo_width;

//7.按比例缩放
$nw = $logo_width*$b;
$nh = $logo_height*$b;
$new_logo = imagecreatetruecolor($nw,$nh);
$color=imagecolorallocate($new_logo,99,99,99); 
imagecolortransparent($new_logo,$color); 
imagefill($new_logo,0,0,$color); 
imagecopyresized($new_logo, $RAM_logo,0, 0,0, 0,$nw, $nh, $logo_width, $logo_height );

//8.设置水平位置
$dis_x = $img_width/2 - $nw/2;
$dis_y = $img_height/2 - $nh/2;

//9.图片水印合并(上传图片,水印,位置,水印宽,水印高,透明度0~100) — 拷贝并合并图像的一部分
imagecopymerge($RAM_img, $new_logo, $dis_x, $dis_y, 0, 0, $nw, $nh, 80);

//10.在浏览器中输出图片
header("Content-Type:".$info_img['mime']);
$out_fun="image{$type_img}";
$out_fun($RAM_img);

//11.保存图片
$out_fun($RAM_img,$img_src);

//12.销毁水印内存
imagedestroy($RAM_logo);
imagedestroy($RAM_img);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值