本文主要是介绍PHP 图片水印 按照比例缩放放大,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
内容很简单,可以二次封装成类
加上判断即可配置成生产环境,贴出来只是为了方便新手学习,更加清楚流程
无论多大的图片多小的图片,水印大小都会随着图片变化而变化
<?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);
这篇关于PHP 图片水印 按照比例缩放放大的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!