当前位置: 首页 > news >正文

php加水印二维码,php给图片加水印的代码

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

*/

function add_wm($nmw_water,$src_file,$output_file,$x,$y) {

if(file_exists($output_file))

return;

$w1 = MagickGetImageWidth($nmw_water);

$h1 = MagickGetImageHeight($nmw_water);

$nmw =NewMagickWand();

MagickReadImage($nmw,$src_file);

// 默认的加水印位置调整

$lt_w = 50;

$lt_h = 50;

if($x == 0){

$w = MagickGetImageWidth($nmw);

$h = MagickGetImageHeight($nmw);

$x = $w;

$y = $h;

}else{

// 根据具体情况调整

$lt_w = 30;

$lt_h = 40;

}

MagickCompositeImage($nmw,$nmw_water,MW_OverCompositeOp,$x - $w1 - $lt_w,$y - $h1 - $lt_h);

MagickWriteImage($nmw,$output_file);

DestroyMagickWand($nmw);

}

// 还是groovy的eachFileRecurse好用啊

function add_wm_recurse($nmw_water,$to_dir,$output_dir,$arr) {

$dp = dir($to_dir);

while($file=$dp->read()){

if($file != '.' && $file != '..'){

if(is_dir($to_dir . '/' . $file)){

mkdir($output_dir . '/' . $file);

add_wm_recurse($nmw_water,$to_dir . '/' . $file,$output_dir . '/' . $file,$arr);

}else{

if(!array_key_exists($to_dir . '/' . $file,$arr)){

continue;

}

$sub_arr = $arr[$to_dir . '/' . $file];

if($sub_arr){

$x = intval($sub_arr[0]);

$y = intval($sub_arr[1]);

add_wm($nmw_water,$y);

}

}

}

}

$dp->close();

}

$to_dir = './resized';

$output_dir = './output';

// 这个是我用java的ImageIO遍历图片像素获取的符合裤子颜色的区域的坐标array(posX,posY)

$arr = array(

array(50,50)

);

$water = './water.png';

$nmw_water =NewMagickWand();

MagickReadImage($nmw_water,$water);

add_wm_recurse($nmw_water,$arr);

DestroyMagickWand($nmw_water);

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

以上是编程之家为你收集整理的php给图片加水印的代码全部内容,希望文章能够帮你解决php给图片加水印的代码所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

相关文章:

  • 跨数据库查询oracle,跨数据库查询(oracle跨数据库查询)
  • centos oracle home目录,CentOS下查找文件安装路径
  • oracle 同步索引,oracle数据库连表查询视图索引)
  • 整理oracle数据字典,oracle结构梳理---数据字典
  • oracle项目是啥,Oracle 基础知识其中七个主要项目
  • constel matlab,基于MATLAB环境下16QAM调制及解调仿真程序说明.doc
  • oracle 00947,ORA-00947: Not enough values 没有足够的值
  • nginx php 413,Nginx出现413 Request Entity Too Large错误
  • oracle重启配置服务,重启系统的时候自动启动oracle服务-安装配置
  • ORACLE---添加控制文件,Oracle数据库添加和移动控制文件
  • linux mongodb服务启动命令行,liunx 后台启动mongodb服务
  • 英灵神殿服务器linux,Valheim英灵神殿linux版本更新教程 服务器内游戏更新方法
  • Linux获取norflash信息,linux ——Uboot模式下读取NORflash芯片数据
  • sqoop在Linux中环境搭建,sqoop搭建和运行小结
  • linux版的微博客户端,Ubuntu Linux 新浪微博客户端
  • (三)从jvm层面了解线程的启动和停止
  • Android框架之Volley
  • Angular2开发踩坑系列-生产环境编译
  • IP路由与转发
  • Koa2 之文件上传下载
  • learning koa2.x
  • SpringBoot 实战 (三) | 配置文件详解
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue的全局变量和全局拦截请求器
  • 关于Flux,Vuex,Redux的思考
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何优雅地使用 Sublime Text
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用权重正则化较少模型过拟合
  • 数据仓库的几种建模方法
  • 我建了一个叫Hello World的项目
  • 译自由幺半群
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 安徽锐锋科技IDMS系统简介
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #etcd#安装时出错
  • (27)4.8 习题课
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (七)c52学习之旅-中断
  • (强烈推荐)移动端音视频从零到上手(下)
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net web项目 调用webService
  • .Net7 环境安装配置
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET使用存储过程实现对数据库的增删改查
  • ?.的用法
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution