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

PHP 方头像转为圆图

业务需要把创建海报上的用户头像由方形转为圆形,前端的样式设置不能用。

故采用GD的函数来对方图进行裁剪处理为圆图。

 

目录

裁剪函数

本地图片

远程图片

效果

参考文章

总结


裁剪函数

从网上找的一个裁剪图片的函数。

代码如下:

/*
* 将图片切成圆角
*/
function drawCircle($imgPath){$ext     = pathinfo($imgPath);$src_img = null;switch ($ext['extension']) {case 'jpg':$src_img = imagecreatefromjpeg($imgPath);break;case 'png':$src_img = imagecreatefrompng($imgPath);break;}$wh  = getimagesize($imgPath);$w   = $wh[0];$h   = $wh[1];$w   = min($w, $h);$h   = $w;$img = imagecreatetruecolor($w, $h);// 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息imagesavealpha($img, true);// 拾取一个完全透明的颜色,最后一个参数127为全透明$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);imagefill($img, 0, 0, $bg);$r   = $w / 2; //圆半径for ($x = 0; $x < $w; $x++) {for ($y = 0; $y < $h; $y++) {$rgbColor = imagecolorat($src_img, $x, $y);if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}}}// 资源内容 resource(5) of type (gd)return $img;
}

本地图片

使用本地图片作为裁剪的源文件,需要图片文件的绝对路径作为参数。

代码如下:

// 绝对路径
$info = drawCircle(dirname(__FILE__).'/img/2.jpg');
//var_dump($info); // resource(5) of type (gd)// 直接图片显示
header('Content-Type: image/png');
imagepng($info);

远程图片

如果使用的是远程的网络图片,比如https://xxx.img文件时。

直接使用会无法读取到图片内容。

就需要变动一下处理:先下载图片到本地,然后图片绝对路径。

代码如下:

// 如果是网络图片 需要下载本地后 换成绝对路径
$fileName = './1.jpg';
file_put_contents($fileName, file_get_contents('https://t9.baidu.com/it/u=2906392343,593562570&fm=217&app=126&size=f242,150&n=0&f=JPEG&fmt=auto?s=1338748239B30A887D51FE0E030040E5&sec=1732986000&t=4418c79f8c027c772f1e5c55284d524e'));
$info = drawCircle(dirname(__FILE__) . ltrim($fileName, '.'));
//var_dump($info); // resource(5) of type (gd)// 直接图片显示
header('Content-Type: image/png');
imagepng($info);

效果

参考文章

php 利用GD库将正方形图片变成圆形_php gd把图片变成圆形-CSDN博客

总结

使用PHP GD库函数对方图进行裁剪处理为圆图

相关文章:

PHP 方头像转为圆图

业务需要把创建海报上的用户头像由方形转为圆形&#xff0c;前端的样式设置不能用。 故采用GD的函数来对方图进行裁剪处理为圆图。 目录 裁剪函数 本地图片 远程图片 效果 参考文章 总结 裁剪函数 从网上找的一个裁剪图片的函数。 代码如下&#xff1a; /* * 将图片切…...

centos 7 离线安装postgis插件

前一段时间记录了下如何在centos7中离线安装postgresql&#xff0c;因为工作需要&#xff0c;我不仅要安装postgresql&#xff0c;还需要安装postgis插件&#xff0c;这篇文章记录下postgis插件的安装过程。 1. 安装前的参考 如下的链接都是官网上的链接&#xff0c;对你安装p…...

pyinstaller打包的时候将ffmpeg也加进包中(包括打包文件夹的方法)

在使用 PyInstaller 打包包含 pydub 的 Python 应用程序时&#xff0c;由于 pydub 需要依赖 ffmpeg&#xff0c;你需要确保 ffmpeg 被正确包含进打包后的程序。以下是操作步骤&#xff1a; 1. 准备 ffmpeg 首先&#xff0c;确保你已经下载并安装了 ffmpeg。可以通过以下方式获取…...

JVM面试知识点1

内存结构&#xff08;掌握内存结构划分、熟知各区域结构功能&#xff09; 经典的JVM内存结构&#xff1a; 按照线程是否共享来划分&#xff1a; Heap (堆区&#xff09; 1. 堆区的介绍 堆是 OOM 故障最主要的发生区域。它是内存区域中最大的一块区域&#xff0c;被所有线程共…...

wordpress

2024年自己建网站的步骤&#xff0c;新手自学建站教程 – 奶爸建站笔记 超详细图解&#xff1a;从 0 搭建一个个人网站&#xff0c;也太简单了吧 - 王一白 - 博客园 如何使用插件或者自定义页面创建一个WordPress着陆页 - 闪电博...

Day33 动态规划part02

62.不同路径 本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。 代码随想录 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili class Solution {public int uniquePaths(int m, int n) {int dp[][] = new int[m][n];//初…...

渗透测试之Web基础之Linux病毒编写——泷羽sec

声明&#xff1a; 学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 (bilibili.com)https://space.bilibili.com/350329294 导读&#xff1a; 时刻…...

jmeter基础07_组件的层级

课程大纲 1. 优先级/执行顺序&#xff08;一般情况&#xff09; 同级组件&#xff1a;按组件先后顺序执行。如&#xff1a;同一层的线程组、同一层的http请求。 上下级组件&#xff1a;先执行外层&#xff08;上级&#xff09;&#xff0c;再执行内层&#xff08;下级&#xff…...

Nginx反向代理和负载均衡配置

一、疑问 在苍穹外卖里&#xff0c;浏览器发送的请求&#xff0c;比如登录&#xff0c;其url为http://localhost/api/employee/login&#xff0c; 而后端的路径是http://localhost:8080/admin/employee/login 两者不一致&#xff0c;数据是如何准确传输的呢&#xff1f; 二、…...

【379】基于springboot的防疫物资管理信息系统

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装防疫物资管理信息系统软件来发挥其高效地信息处理的作用&am…...

Linux 各个目录作用

刚毕业的时候学习Linux基础知识&#xff0c;发现了一份特别好的文档快乐的 Linux 命令行&#xff0c;翻译者是happypeter&#xff0c;作者当年也在慕课录制了react等前端相关的视频&#xff0c;通俗易懂&#xff0c;十分推荐 关于Linux的目录&#xff0c;多数博客已有详细介绍…...

【Linux】文件操作的艺术——从基础到精通

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;前言&#xff1a;一切皆文件 &#x1f4da;一、C语言的文件接口 &#x1f4d6;1.文件打…...

java中的运算符

大家好&#xff0c;今天来看看java中运算符的一些知识点&#xff0c;理解好运算符是我们在写代码的一大重点&#xff0c;那么我们就来看看吧。 运算符:对操作数进行操作时的符号.,不同运算筹操作的含义不同. 一、算术算片. 1、基本四则运算符:加减乘除模(一*/%) 注意:都是二元…...

全面解析 C++ STL 中的 set 和 map

C 标准模板库&#xff08;STL&#xff09;中的关联式容器以其强大的功能和高效性成为开发者解决复杂数据组织问题的重要工具。其中&#xff0c;set 和 map 是最常用的两类关联容器。本篇博客将从基本特性、底层实现、用法详解、高级案例以及性能优化等多个角度&#xff0c;详细…...

css:怎么设置div背景图的透明度为0.6不影响内部元素

目录 1.前言 2.解决思路 3.具体实例 4.另外一种实例 5.总结 1.前言 div背景图为project-bg.png&#xff0c;设置div透明度为0.6&#xff1b;div内的名称、数值受透明度影响颜色显示不正常&#xff1b;怎么设置背景图的透明度为0.6不影响内部元素&#xff1b; 2.解决思路 …...

Kubernetes ConfigMaps

文章目录 简介创建ConfigMaps通过命令行使用字面值创建 ConfigMap。从文件创建ConfigMaps从多个文件创建 ConfigMap从目录创建 ConfigMap使用 YAML 创建 ConfigMap 使用ConfigMaps使用 ConfigMaps作为环境变量使用 ConfigMap 作为卷挂载使用 ConfigMap 中的特定的key ConfigMap…...

前端热门面试题目[一](HTML、CSS、Javascript、Node、Vue、React)

如何设计一个前端页面&#xff0c;实现PC端访问展示Web应用&#xff0c;移动端访问展示H5应用&#xff1f; 为了实现这一功能&#xff0c;通常需要使用响应式设计或者服务器端检测用户设备并返回相应的页面。以下是一些实现方法&#xff1a; 响应式设计&#xff1a;通过CSS媒…...

Swift 宏(Macro)入门趣谈(五)

概述 苹果在去年 WWDC 23 中就为 Swift 语言新增了“其利断金”的重要小伙伴 Swift 宏&#xff08;Swift Macro&#xff09;。为此&#xff0c;苹果特地用 2 段视频&#xff08;入门和进阶&#xff09;颇为隆重的介绍了它。 那么到底 Swift 宏是什么&#xff1f;有什么用&…...

ES6 Set、Map、WeakSet、WeakMap 四者辨析与实战应用详解

在 ES6 中,Set 和 Map 是两种非常重要的新增数据结构,它们都具有独特的特性和用途,能够帮助开发者更高效地处理和管理数据。除此之外,WeakSet 和 WeakMap 作为这两种数据结构的变种,也具有一些特殊的功能。下面我会从 Set 数据结构、Map 数据结构、WeakSet 和 WeakMap 对比…...

【数据结构】哈希表实现

前言 在本篇博客中&#xff0c;作者将会带领你使用C语言来实现一个哈希表。 一.什么是哈希表 在实现哈希表之前&#xff0c;我们先来学习一下什么是哈希表。 在传统的数据结构中&#xff0c;例如数组&#xff0c;链表和二叉平衡树等数据结构&#xff0c;这些数据结构的元素关键…...

OpenClaw技能开发:为百川2-13B-4bits模型定制专属自动化模块

OpenClaw技能开发&#xff1a;为百川2-13B-4bits模型定制专属自动化模块 1. 为什么需要为特定模型定制技能&#xff1f; 去年我在尝试用OpenClaw自动化处理技术文档时&#xff0c;发现一个有趣的现象&#xff1a;同样的"整理会议录音并生成摘要"任务&#xff0c;使…...

物联网核心传感器技术详解与应用

1. 物联网系统中的关键传感器技术解析1.1 传感器在物联网中的核心作用现代物联网系统通过各类传感器实现物理世界与数字世界的连接。这些设备能够检测环境参数变化&#xff0c;并将采集到的模拟信号转换为数字数据&#xff0c;通过有线或无线网络传输至云端或本地处理单元。在工…...

在VSCode中高效使用cl.exe构建和调试活动文件的AI辅助开发实践

在Windows平台上进行C开发&#xff0c;cl.exe是绕不开的核心编译器。很多朋友习惯在VSCode中写代码&#xff0c;但调试时却不得不先打开那个黑底的“Developer Command Prompt for VS”&#xff0c;再在里面启动VSCode&#xff0c;否则就会遇到找不到cl.exe或者链接库失败的经典…...

FPGA设计实战:如何用IBUFDS_IBUFDISABLE原语给你的差分输入省电(附Vivado 2023.1配置)

FPGA低功耗设计实战&#xff1a;IBUFDS_IBUFDISABLE原语在差分信号中的节能应用 在高速数字系统设计中&#xff0c;差分信号因其优异的抗干扰能力和噪声抑制特性&#xff0c;已成为LVDS、HDMI等接口的标准配置。然而&#xff0c;差分输入缓冲器带来的额外功耗往往被工程师忽视—…...

Jetson Nano上Archiconda3安装避坑指南:从下载到换源完整流程

Jetson Nano开发者必备&#xff1a;Archiconda3高效配置与疑难排错全攻略 在边缘计算和嵌入式AI开发领域&#xff0c;Jetson Nano凭借其出色的能效比和紧凑体积&#xff0c;已成为众多开发者的首选平台。而Archiconda3作为专为ARM架构优化的Python环境管理工具&#xff0c;能够…...

ArcGIS JS API调用天地图WMTS服务实战:从GetCapabilities解析到完整代码实现

ArcGIS JS API调用天地图WMTS服务全流程解析 在WebGIS开发中&#xff0c;将第三方地图服务无缝集成到ArcGIS生态系统中是常见需求。天地图作为国内权威的地理信息服务&#xff0c;其WMTS&#xff08;Web Map Tile Service&#xff09;接口的调用尤为关键。本文将深入剖析从服务…...

写作压力小了!8个降AIGC网站测评:开源免费真能帮你降AI率吗

在学术写作日益依赖AI工具的当下&#xff0c;如何有效降低AIGC率、去除AI痕迹&#xff0c;同时保持文章的语义通顺和逻辑清晰&#xff0c;成为许多学生和研究者面临的难题。AI降重工具的出现&#xff0c;正是为了解决这一痛点&#xff0c;通过智能分析与优化&#xff0c;帮助用…...

AMDGPU 基于DRM SVM框架的新SVM功能实现 :attr_range 与 svm_range 的对应关系分析

AMD 正在使用 drm svm框架重构SVM的实现&#xff0c;看来drm svm框架要进入大范围应用了。下面是在kernel社区上由AMD的开发人员提交的POC 验证版本的patches的技术方案实现。这里快速总结了实现&#xff0c;以飨读者。 因是POC版本&#xff0c;设计可能会变动&#xff0c;读者…...

如何基于dify智能客服系统实现高效对话管理:架构设计与性能优化实战

如何基于dify智能客服系统实现高效对话管理&#xff1a;架构设计与性能优化实战 在构建智能客服系统的实践中&#xff0c;我们常常面临一个核心矛盾&#xff1a;用户期望获得类人的、流畅的多轮对话体验&#xff0c;而系统后端却要处理海量并发、精准理解意图并维持复杂的对话状…...

mbed-Freescale:Kinetis MCU高速ADC硬件加速库

1. 项目概述mbed-Freescale是一个面向飞思卡尔&#xff08;Freescale&#xff0c;现为NXP Semiconductors&#xff09;微控制器平台的 mbed OS 兼容库实现&#xff0c;其核心设计目标并非泛化支持全系列 Freescale MCU&#xff0c;而是聚焦于高性能模拟信号采集场景下的硬件加速…...