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

2024-06-04 18:48

本文主要是介绍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 图片水印 按照比例缩放放大的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030829

相关文章

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

在服务器上浏览图片

@StarSky 2018-10-26 15:09 字数 15971 阅读 28 https://www.zybuluo.com/StarSky/note/1294871 来源 2018-09-27 线上服务器安装 imgcat Tool   2018-09-27 线上服务器安装 imgcat 0. 准备文件:iterm2_shell_integration.bash1. 在有权限

PHP的基本语法有哪些?

PHP的基本语法包括以下几个方面: PHP标记:PHP脚本以<?php开始,以?>结束。这是PHP文件的默认文件扩展名是.php。 变量和常量:变量以$符号开头,其后是变量的名称。常量使用define()函数定义,例如define("常量名", 常量值);。 数据类型:PHP支持多种数据类型,如整型、浮点型、字符串型等。 注释:PHP支持单行注释(用//表示)和多行注释(用/* */表示

el-upload 上传图片及回显照片和预览图片,文件流和http线上链接格式操作

<div v-for="(info, index) in zsjzqwhxqList.helicopterTourInfoList" :key="info.id" >编辑上传图片// oss返回线上地址http链接格式:<el-form-itemlabel="巡视结果照片":label-width="formLabelWidth"><el-upload:action="'http:

php json_encode 大括号中括号

当array是一个从0开始的连续数组时,json_encode出来的结果是一个由[]括起来的字符串。 而当array是不从0开始或者不连续的数组时,json_encode出来的结果是一个由{}括起来的key-value模式的字符串。 当字符串为[1,1,1] 这种模式时,json_decode默认解析出来的结果是一个数组。 当字符串为{"1":1,"2":1} 这种模式时,json_

PHP序列化用到的构造:__sleep() __wakeup()

串行化serialize可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.   当一个对象被串行化,PHP会

PHP生成csv格式Excel,秒级别实现excel导出功能

防止报超内存,兼容中文,兼容科学技术法。 爽。。。。很爽。。。。 /*** 告诉浏览器下载csv文件* @param string $filename*/public static function downloadCsv($data, $filename, $encoding = 'utf-8'){header("Content-type: text/csv");header("Conten

PHP 读取或生成大的Excel

场景,在很多情况下,需要读取Excel文件。 常用的有PHPExcel包或者使用 maatwebsite/excel 包 但是使用这个包读取或生成excel,如果excel文件过大,很容易出现超内存情况。 解决方法: 上传:要求上传者使用.csv 文件上传。然后使用php自带的 fgetcsv()函数来读取文件。http://php.net/manual/zh/function.fgetc

文件权限修改为777,php failed to open stream: Permission denied

记录一次在谷歌云上的异常诡异的事件: 环境 centos7.5 nginx php7.0 mysql 问题: 问题一 我用相同的nginx配置,只是修改了nginx root目录。 打开/var/www/html/ 这个目录就报 2018/06/22 04:35:03 [error] 15840#0: *438 FastCGI sent in stderr: “Primary scr

PHP ODBC:连接数据库的桥梁

PHP ODBC:连接数据库的桥梁 PHP ODBC(Open Database Connectivity)是一个允许PHP应用程序连接到各种数据库管理系统的扩展。它为PHP提供了一个标准的数据库访问接口,使得开发者可以编写不依赖于特定数据库系统的代码。本文将详细介绍PHP ODBC的概念、工作原理、使用方法以及在实际开发中的应用。 什么是PHP ODBC? PHP ODBC扩展使得PHP能