您的当前位置:首页>全部文章>文章详情

【PHP】PHP生成ICO图标的方法

CrazyPanda发表于:2024-01-30 17:07:05浏览:300次TAG:

本篇文章给大家介绍一下使用php生成ico图标的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

ico图标在每个网站中都需要用到的,使用方法也是很简单的,基本上以下面的方式为主,但也有其他的方式。

<link rel="shortcut icon" href="/favicon.ico">

一般将ico图标放置在网站的根目录下,使用时可以使用相对路径,也可以使用绝对路径来引入,这个没有明确的规定。

我们先来了解几个函数,在下面的代码中要用到的,主要是一下图像处理函数:

strtolower、end、imagecreatefromjpeg、imagecreatefromgif、imagecreatefrompng、getimagesize、imagecreatetruecolor、imagecopyresampled、imagejpeg、imagedestroy

一、strtolower函数

strtolower函数是将所有字符串全部转换为小写形式,版本支持为PHP4.0+,使用方式:

<!--?php
echo strtolower('This is strtolower function');
?-->

二、end函数

end函数是将数组内部指针指向最后一个元素,并返回该元素的值,版本支持为PHP4.0+,使用方式:

<!--?php
$info = array('red','yellow','blue','white');
echo end($info);
?-->

三、imagecreatefromjpeg函数

imagecreatefromjpeg函数是载入jpg 或 jpeg格式,成功后返回图象资源,失败后返回 FALSE 。php.net上给出的说明为:由文件或 URL 创建一个新图象,版本支持4.3+,使用方式:

<!--?php
$imgPath = './demo.jpg';
$im = @imagecreatefromjpeg($imgPath);
?-->

四、imagecreatefromgif函数

使用方式及方法类似于imagecreatefromjpeg()函数。

五、imagecreatefrompng函数

使用方式及方法类似于imagecreatefromjpeg()函数。

六、getimagesize函数

getimagesize函数,取得图像大小,支持 JPC,JP2,JPX,JB2,XBM ,WBMP ,SWC ,TIFF等格式,成功则图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串,失败将返回false及警告。个人建议PHP版本高于5.0,使用方式:

<!--?php
$imgPath = './demo.png';
$info = getimagesize($imgPath);
?-->

七、imagecreatetruecolor函数

imagecreatetruecolor函数,新建一个真彩色图像,成功后返回图象资源,失败后返回 FALSE 。使用方式:

<!--?php
$tmp = imagecreatetruecolor($width, $height);
?-->

八、imagecopyresampled函数

imagecopyresampled函数,重采样拷贝部分图像并调整大小,将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。

<!--?php
// 参数注释:目标图象连接资源,源图象连接资源,目标 X 坐标点,目标 Y 坐标点,源的 X 坐标点,源的 Y 坐标点,目标宽度,目标高度,源图象的宽度,源图象的高度
imagecopyresampled($tmp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
?-->

九、imagejpeg函数

imagejpeg函数,将图像输出到浏览器或文件。PHP版本支持4.0+,使用方式:

<!--?php
// 参数注释:图像资源,路径,质量(默认值(-1)使用默认的IJG质量值(约75))
imagejpeg($tmp, $directory . $filename, 100);
?-->

十、imagedestroy函数

imagedestroy函数,销毁图像,释放关联内存。PHP版本支持4.0+,使用方式:

<!--?php
imagedestroy('./demo.png');
?-->

上面一共是10个函数,对于一些基本的函数没有做介绍,下面是生成ico代码:

/**
 * 创建ico图标
 * @return string
 *
 */
public function icon()
{
    if(request()->isPost()) {
        //获取图片信息
        $postVars = ["image" => trim($_FILES["image"]["name"]), "image_tmp" => $_FILES["image"]["tmp_name"], "image_size" => (int)$_FILES["image"]["size"], "image_dimensions" => (int)$_POST["image_dimensions"]];
        //设置图片格式
        $validExts = ["jpg", "jpeg", "gif", "png"];
        //设置图片文件大小      175kb
        $max_file_size = 179200;
        //图片名称和类型
        $filenameParts = explode(".", $postVars["image"]);
        //获取图片格式
        $ext = strtolower(end($filenameParts));
        //设置图片存储路径
        $directory = "./favicon/";
        //设置命名格式
        $rand     = time();
        $filename = $rand . $postVars["image_size"];
        //判断图片大小
        if($postVars["image_size"] <= $max_file_size) {
            //判断图片格式
            if(in_array($ext, $validExts)) {
                //依据格式使用不同函数
                if($ext == "jpg" || $ext == "jpeg") {
                    $image = imagecreatefromjpeg($postVars["image_tmp"]);
                }
                else if($ext == "gif") {
                    $image = imagecreatefromgif($postVars["image_tmp"]);
                }
                else if($ext == "png") {
                    $image = imagecreatefrompng($postVars["image_tmp"]);
                }
                if($image) {
                    list($width, $height) = getimagesize($postVars["image_tmp"]);
                    $newWidth  = $postVars["image_dimensions"];
                    $newHeight = $postVars["image_dimensions"];
                    $tmp       = imagecreatetruecolor($newWidth, $newHeight);
                    //将图像复制到具有新宽度和高度的图像
                    imagecopyresampled($tmp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
                    //创建100%质量的图像文件
                    if(is_dir($directory)) {
                        if(is_writable($directory)) {
                            imagejpeg($tmp, $directory . $filename, 100) or die('没有创建文件的权限');
                            if(file_exists($directory . $filename)) {
                                //重命名
                                $newFilename = md5(time());
                                rename($directory . $filename, $directory . $newFilename . ".ico");
                                return '"http://'.$_SERVER['SERVER_NAME'] . substr($directory, 1).$newFilename.".ico";
                            }
                            else {
                                echo "指定的文件不可写";
                            }
                        }
                        else {
                            return '目录:' . $directory . '"无写入权限';
                        }
                    }
                    else {
                        return '目录: "' . $directory . '"不存在';
                    }
                    imagedestroy($image);
                    imagedestroy($tmp);
                }
                else {
                    return "无法创建图像文件";
                }
            }
            else {
                return "图标过大,不能超过175KB";
            }
        }
        else {
            return "图片格式只能是后面几种 (jpg, jpeg, gif, png).";
        }
    }
    else {
        return view('Index/icon');
    }
}


猜你喜欢

【PHP】关于bug率计算和它的实际意义
问题1:bug率有什么作用?my opion:用处有很多,需要具体情况具体分析,不过主要作用一般是来评价工作产品的质量。如果bug率较高,说明系统质量较差,需要大量的返工。项目经理就需要做好缺陷分析(缺陷的类型、分布、严重程度等),找出原因,以便做好下一阶段的缺陷预防工作。除此之外,还可以结合其它方面的信息,判断是否一些工作不充分。譬如,如果缺陷密度过低,有两个原因:可能工作产品质量确实高;也可能评审或测试不充分,更多的缺陷没有发现。在某些公司,bug率也作为项目度量考核的一项指标。问题2:bu
发表于:2024-06-22 浏览:255 TAG:
【PHP】构建一个在线视频网站
PHP是一种广泛应用的开发语言,被用于构建许多各种类型的网站和应用程序。在本文中,将介绍使用PHP开发一个在线视频网站的流程。第一步:需求分析在开始开发之前,首先需要进行需求分析。这包括确定网站的主要功能和特性,例如用户注册、视频上传、视频播放等。还需要确定网站的目标用户和受众群体,以及预期的规模和流量。通过深入了解需求,可以为后续的开发工作提供指导。第二步:数据库设计在构建一个在线视频网站时,一个关键的步骤是设计数据库。数据库将存储用户信息、视频信息、评论、标签等相关数据。需要确定表
发表于:2023-12-25 浏览:282 TAG:
【PHP】PHP去除字符串中的标点符号
1. 使用str_replace()2. 使用正则表达式3. 使用ctype_punct函数4. 去除中文字符
发表于:2024-11-11 浏览:230 TAG: #php
【PHP】如何利用PHP实现RPC
一、什么是RPC什么是RPC&nbsp; &nbsp;RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,用于使一个计算机程序可以调用另一个运行在不同计算机上的程序的过程或函数,并且无需了解底层网络细节。简而言之,RPC允许程序在不同的计算机或不同的进程之间通过网络进行通信,就好像调用本地函数一样。RPC的原理在RPC中,请求方(称为客户端)通过发送一条消息给目标方(称为服务器),请求执行某个远程过程(函数)。服务器接收到请求后,执行相应的过程,并将结果返回给
发表于:2024-08-26 浏览:252 TAG: #php #rpc
【PHP】PHP中的array_values()函数获取数组中的值
在PHP中,数组是一个十分常用且重要的数据类型。在实际开发过程中,我们经常需要操作数组中的值。其中,array_values()函数是一个非常有用的函数,它可以用于获取数组中的所有值并返回一个新的索引数组。array_values()函数的语法如下:array_values(array $array): array该函数需要一个数组作为参数,并返回一个新的索引数组,其中存储了原始数组中的所有值。下面是该函数的具体说明:参数$array:需要获取值的原始数组。返回值:一个新的索引数组,包含了原始数
发表于:2024-07-30 浏览:240 TAG:
【PHP】tp使用lunar-php,获取节日节气
lunar-php 是一个用于获取公历和农历(即阳历和阴历)信息的 PHP 库。要使用 lunar-php 获取节日和节气,你需要先安装这个库。&nbsp;首先,通过 Composer 安装 lunar-php:composer&nbsp;require&nbsp;chenmingl/lunar-php获取阳历阴历节日及节气:require&nbsp;&#39;vendor/autoload.php&#39;; &nbsp; use&nbsp;Lunar\Lunar; &nbsp; //&amp;nbs
发表于:2024-04-09 浏览:310 TAG:
【PHP】PHP 8.3 大升级:20 个新特性全面解析
PHP 8.3 是流行的服务器端脚本语言的最新版本,带来了许多新功能和改进,旨在简化 Web 开发并提高性能。这些增强功能包括只读类、新函数 json_validate() 、Randomizer 类的扩展以及更合适的日期/时间异常。它们将彻底改变 PHP 开发体验,使其更加高效、安全,以满足 Web 开发人员和企业的需求。1. Readonly 类改进PHP 8.3 对只读类进行了重大改进,使开发人员能够更灵活地控制其代码。其中一个显著的变化是允许在克隆时重新初始化只读属性,解决了特
发表于:2023-12-04 浏览:546 TAG:
【PHP】微服务架构综合实战 一文让你了解什么是微服务 使用PHP 搭建微服务框架 最全微服务架构讲解以及演示
本文将带你从基础的微服务架构设计、网络协议、注册中心、配置中心、网关层面&nbsp;渐进式讲解其微服务。目录一、微服务架构设计方案架构演进微服务概念&nbsp;拆分三个火枪手原则AKF原则二、微服务注册中心和配置中心为什么要使用服务发现与注册为什么要使用配置中心官方下载地址设置环境变量Server配置单机配置集群配置命令解析ThinkPHP接入Consul配置信息中心&amp;nbs
发表于:2024-05-27 浏览:764 TAG:
【PHP】使用 PHPMailer 实现邮件的实时发送
今天我们利用GitHub上20K+星星的项目 PHPMailer 实现一个接收询盘并实时同步到指定邮箱的功能。实现基本的HTML+CSS首先我们用 HTML+CSS 做一个简单的 form 表单&lt;div&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;You&nbsp;can&nbsp;contact&nbsp;us&nbsp;at&amp;nbs
发表于:2023-12-28 浏览:318 TAG:
【PHP】PHP8.1新特性大讲解之initializers初始化器
PHP 8.1:初始化器(new in initializers)PHP 8.1 添加了一个看似很小的细节,但我认为它会对许多人产生重大的日常影响。那么这个“初始化器 RFC 中的新内容”是关于什么的?我们来看一个例子;我们都写过这样的代码:class&nbsp;MyStateMachine { &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;n
发表于:2024-01-04 浏览:307 TAG: