php GD库做水印功能,合并图片

2023-11-04

1.创建一个适应大小的底层图片
2.读取需要拼接的图片
$dst_data=file_get_contents($dst_src);
$dst_img = imagecreatefromstring($dst_data);
3.把读取的图放到指定的位置,这里需要慢慢调试,使用下面的函数
imagecopymerge
4.出拼接后的图
header("Content-Type:image/jpeg");
imagejpeg($dst_img);


可能会用到的函数
imagecreatetruecolor //生成底图
file_get_contents //获取对应的图片
imagecreatefromstring //字符串转换成图片
imagecopyresampled //拷贝图片调整大小
imagecopymerge //合成图片


header("Content-type: image/jpeg");

//原始图像
$dst = "images/flower_1.jpg";

//得到原始图片信息
$dst_im = imagecreatefromjpeg($dst);
$dst_info = getimagesize($dst);

//水印图像
$src = "images/logo.gif";
$src_im = imagecreatefromgif($src);
$src_info = getimagesize($src);

//水印透明度
$alpha = 30;

//合并水印图片
imagecopymerge($dst_im,$src_im,$dst_info[0]-$src_info[0],$dst_info[1]-$src_info[1],0,0,$src_info[0],
$src_info[1],$alpha);

//输出合并后水印图片
imagejpeg($dst_im);
imagedestroy($dst_im);

imagedestroy($src_im);

下面是个简单的水印demo

<?php
function combine_image($image1,$image2,$c=0,$d=0)//$image1底层图片  $image2水印图片 $c合并X坐标 $d合并Y坐标
{
  $filename=time().".jpg";
  if(!$image1 || !$image2) return false;
  $aa=getimagesize($image1);
  $width=$aa["0"];
  $height=$aa["1"];
  $kind=$aa['mime'];
  $aa1=getimagesize($image2);
  $width1=$aa1["0"];
  $height1=$aa1["1"];
  $kind1=$aa1['mime'];


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

  //根据最大值为300,算出另一个边的长度,得到缩放后的图片宽度和高度
  if($width > $height){
    $width=$max;
    $height=$height*($max/$aa['0']);
  }else{
    $height=$max;
    $width=$width*($max/$aa['1']);
  }
  $im = imagecreatetruecolor($width,$height);
  if($kind=='image/jpeg'){
    $im1 = imagecreatefromjpeg($image1);
  }elseif($kind=='image/png'){
    $im1 = imagecreatefrompng($image1);
  }else{
    $im1 = imagecreatefromgif($image1);
  }
  if($kind1=='image/jpeg'){
    $im2 = imagecreatefromjpeg($image2);
  }elseif($kind1=='image/png'){
    $im2 = imagecreatefrompng($image2);
  }else{
    $im2 = imagecreatefromgif($image2);
  }
  imagecopyresampled($im, $im1, 0, 0, 0, 0,$width,$height,$aa['0'],$aa['1']);
  imagecopyresampled($im, $im2, $c, $d,0, 0,$width,$height,$aa1['0'],$aa1['1']);
  header('Content-Type: image/jpg');
  //imagejpeg($im,$filename);
  imagejpeg($im);
  imagedestroy($im);
  imagedestroy($im1);
  imagedestroy($im2);
  return $filename;
}
combine_image('1.jpg','2.png');


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php GD库做水印功能,合并图片 的相关文章

  • 删除删除线的 unicode 文本?

    我偶尔会收到用户的输入 他们正在使用那些烦人的 stikethrough 文本生成器 这破坏了我的代码 我尝试过在这里找到的一些代码 string preg replace x00 x1F x80 xFF string 它有效 但我需要它只
  • Symfony2 - Doctrine - 更新后没有更改集

    因此 当实体的某个值发生更改时 我会发送电子邮件 我只想在更新后发送电子邮件 以防更新因任何原因失败 所以在更新前我可以这样做 public function preUpdate LifecycleEventArgs args if arg
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect
  • PHP JSON 解析出现错误

    我正在尝试使用 PHP 解析 JSON 字符串 使用 jQuery 将 JSON 发送到 PHP 文件 ajax在这种格式中 value 59 value 7 value 46 但由于某种奇怪的原因我不断收到此错误 Invalid argu
  • PDO 静默准备失败[重复]

    这个问题在这里已经有答案了 我正在尝试 PHPsession set save handler我想使用 PDO 连接来存储会话数据 我有这个函数作为写入操作的回调 function write id data logger WRITE id
  • Laravel 作为客户端时,用于身份验证的 JWT 存储在哪里?

    我使用 Laravel 6 和 GuzzleHTTP 7 我可以设法向外部 REST API 发出请求并成功授权并取回令牌 access token FooXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 eyJleHAiOj
  • 保护公用文件夹中的某些文件和文件夹不被查看

    今天我已经为此苦苦挣扎了一段时间 我想要完成的是我需要阻止所有用户访问某些 php 文件和图像以及更多内容 它们位于单独的文件夹中 我正在使用 WAMP 服务器 我不希望用户只能访问该网站 例如 www images crazy cat p
  • 从 PHP 页面使用 GMail SMTP 服务器发送电子邮件

    我尝试从 PHP 页面通过 GMail 的 SMTP 服务器发送电子邮件 但收到此错误 身份验证失败 SMTP SMTP 服务器不支持身份验证 代码 250 响应 mx google com 为您服务 98 117 99 235 SIZE
  • PHP MySQL从2个表中获取数据

    我正在尝试合并数据库中的 2 个表 文件表 id file name file description file url access files 表 id student id file id 这是我的sql代码 当前从文件表中获取所有文
  • Laravel-Excel批量导入

    所以 我有一个 28k 行的 Excel 文件 我想加载它 然后插入数据库 但它刚刚停止 空格处 我尝试减少到 5k 数据 它有效 但速度太慢我也尝试过使用chunk http www maatwebsite nl laravel exce
  • 设置 Cron 作业在 24 小时后删除文件

    我阅读了所有相关问题 但无法理解它们 我正在使用 Plesk CPanel 来设置 cron 作业 正如大家所建议的那样 我想在 24 小时后删除文件夹中的所有文件 假设我必须每 2 分钟后删除它 这样我就可以检查它是否工作 我有两个选择
  • wp_mail(Wordpress 邮件功能)未发送到 gmail 或 live.co.uk 帐户

    我有一个网站 允许访问者通过两种方式联系我 通过其自己页面上的联系表单和侧边栏中的 ajax 小型联系表单 两种联系方式都会向我的 Gmail 帐户发送电子邮件 它自己页面上的联系表单工作正常 但ajax表单不会发送到gmail 也不会发送
  • 依赖注入类 - 在哪里存储配置

    当对数据库处理程序等使用依赖注入而不是单例时 最好将配置保存在哪里 即用户名密码主机等 保留在类内部 使用容器类或使用静态配置类或使用文件 我通常将它们保存在网络根目录之外的文件中
  • Laravel php artisan db:seed 导致“use”语句错误

    当我尝试跑步时php artisan db seed我收到以下错误 The use statement with non compound name DB has no effect 我已经编写了自己的种子文件 我将其包含在下面 基于文档中
  • 将字符串 (ISO) 转换为日期 PHP

    我正在尝试将字符串转换为日期PHP 我收到的字符串格式为 2016 07 16T1 22 04 324 1030 OR 2016 12 20T03 24 59 000Z 当我尝试这个时 newDate DateTime createFrom
  • PHP - 函数内的 header("Location:") 重定向而不调用函数

    我正在使用一个名为的函数headerLocation 以便正确重定向 这是该函数的相关部分 我用它来重定向 然后显示适当的消息 个人偏好 function headerLocation location message SESSION ou
  • 展开/折叠 div

    我在 PHP MySQL 生成的单个页面上有多个展开 折叠框 问题是 当我单击一个链接来展开一个框时 它会展开所有框 我考虑过在课程末尾附加帖子 ID div class postreplycontainer POST ID 但我不确定这是
  • PHP:检查多维数组中的重复值

    我对多维数组有这个问题 给定以下多维数组 Array 0 gt Array a b c 1 gt Array x y z 2 gt Array a b c 3 gt Array a b c 4 gt Array a x z 我想检查它的值并
  • Laravel 广播频道 - 检查连接

    我在文档或搜索中找不到这个 也许有人有一些提示 我正在尝试检查后端存在通道上有多少连接 我可以用 Echo 来检查前端是否正常 如下所示 Echo join chat here users gt users length is the pr
  • 在 Symfony 2 项目中安装 Bootstrap 主题

    我正在考虑安装这个主题 http bootswatch com superhero 在我的SF2项目中 我注意到页面顶部有4个文件可供下载 即 bootstrap min css 引导程序 css 无变量 bootswatch less 我

随机推荐

  • Jeesite4修改登录页面,首页

    大家进行熟悉框架的时候 一定要先吃透文档 因为文档很全 说实话 百度上Jeesite4的资源真的很少 剩下的就只剩文档了 本篇文章想跟大家分享的是如何修改默认的前段页面 我感觉与其说修改 还不说是替换 因为他跟SpringMVC的视图配置有
  • 多目标优化问题和遗传算法学习笔记

    多目标优化问题和遗传算法学习笔记 多目标优化问题和遗传算法学习笔记 本人最近研究多目标优化问题以及NSGA2算法 下面把学习笔记分享给大家 希望可以帮助到一些和我一样的初学者们 名词 Nondominated sorting 非支配排序 N
  • OpenMMLab AI实战营第二期(1)计算机视觉与OpenMMLab概述

    通过今天课程的学习 算是比较大的扩展了我的视野 近期主要学一些强化学习的知识 没有想到计算机视觉领域已经发展的这么迅猛 很多以前只是在脑海里想象的计算机视觉应用场景 原来OpenMMLab已经实现了 我比较对目标检测感兴趣 而且之后可能要用
  • nginx模块初始化

    nginx模块初始化 1 nginx模块介绍 在nginx编译之后 在源代码目录中会出现objs文件夹 里面有ngx auto config h ngx auto headers h以及ngx modules c文件等 其中 生成的ngx
  • linux安装redis

    一 下载 wget https download redis io releases redis 6 2 6 tar gz 二 解压 tar zvxf redis 6 2 6 tar gz 三 移动 mv root redis 6 2 6
  • FPGA 30 综合数字ADC /DAC 信号发送采集系统设计(综合项目设计)

    FPGA 30 综合数字ADC DAC 信号发送采集系统设计 综合项目设计 模块名称 综合数字ADC DAC 信号发送采集系统设计 主要功能 本实验设计了一个信号发送和采集系统的设计 在整个系统中 基于原先学习的key filter 按键滤
  • c语言数据结构之栈

    前言 栈是一种先进后出的结构 只能对栈顶进行操作 数据入栈 出栈都在栈顶处 换句话说 栈只能对栈顶端进行操作 禁止跳过栈顶插入或删除其它数据 栈可以简单分为数组栈和链表栈 数组栈设定了空间大小 而链表栈在内存允许的范围内无空间大小限制 通过
  • 域控服务器和文件服务器,windows2008 r2域控制器和文件服务器问题

    发表于 2017 5 17 17 55 来自 51CTO网页 引用 原帖由 xifalniang 于 2017 5 17 17 36 发表 可能是与文件共享相关的服务异常 具体先dcdiag检查下吧 看下出错时候的系统日志 目录服务器诊断
  • 七叔带你玩转pytest—fixture,妈妈再也不用担心学不会测试了

    前言 我们今天呢来看看pytest实现fixture有几种方式 分别该怎么进行呢 小编废话不多说了咱们直接开始吧 自动化测试框架中的 fixture 我们在编写测试用例 都会涉及到用例执行之前的环境准备工作 和用例执行之后的环境清理工作 代
  • zxing解码条形码C++

    include funset hpp include
  • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your

    报错 ERROR 1064 42000 You have an error in your SQL syntax check the manual that corresponds to your MySQL server version
  • hosts ip 指向ip_【好玩的网络-第4期】DNS硬核科普,你是怎么上网的?DNS里都有啥?传说中的hosts文件又是啥?...

    好玩的网络 系列面向普通人的网络科普视频 我在我的哔哩哔哩账号 up主 旋律果子 更新 好玩的网络 视频版 在我的知乎 用户 曾彦 专栏更新 好玩的网络 文字版 最新消息以及预告在我的个人网站www yzeng1995 top发布 大家可以
  • 09.MyBatis整合PageHelper实现分页功能

    09 MyBatis整合PageHelper实现分页功能 MyBatis可以使用第三方的插件来对功能进行扩展 分页组手PageHelper是将分页的复杂操作进行封装 使用简单的方式即可获得分页的相关数据 开发步骤 导入通用的PageHelp
  • STM32的全系列MCU的ID号的地址及读取方法

    在STM32的全系列MCU中均有一个96位的唯一设备标识符 在ST的相关资料中 对其功能的描述有3各方面 用作序列号 例如 USB 字符串序列号或其它终端应用程序 在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时
  • 全桥DCDC输出电压和变比占空比的关系

    在做各种数千瓦到数十千瓦的变换器的过程中 辅助电源总是如影随形 但是我从来没有专门去做过它们 有时候遇到这方面的问题需要解决的时候 对其基本原理竟一时懵逼了 一下图为例 列出今天的疑问 输出电压和占空比 变压器变比的关系 经过一番思考和查阅
  • vue-styled-components

    1 安装 npm install vue styled components 2 在一个组件中引入
  • LabVIEW必知

    介绍 基础知识 数学函数 矩阵数学 数据采集 介绍 传感器和信号 硬件 采集数据 操作数据采集系统需要软件 而这正是LabVIEW发挥作用的地方 LabVIEW旨在与National Instruments数据采集系统一起使用 在收集数据之
  • 微服务(Microservice)那点事

    WHAT 什么是微服务 微服务简介 这次参加JavaOne2015最大的困难就是听Microservice相关的session 无论内容多么水 只要题目带microservice 必定报不上名 可见Microservice有多火 最喜欢其中
  • VUE3 学习笔记(七)动态样式 class 实现

    目录 一 绑定 HTML class 1 绑定对象 2 绑定数组 3 在组件上使用 二 绑定内联样式 1 绑定对象 2 绑定数组 3 自动前缀 4 样式多值 数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式 因为
  • php GD库做水印功能,合并图片

    1 创建一个适应大小的底层图片 2 读取需要拼接的图片 dst data file get contents dst src dst img imagecreatefromstring dst data 3 把读取的图放到指定的位置 这里需