检查图像文件类型

2024-03-11

我正在尝试向我的网站添加一个功能,用户可以将其个人资料图片设置为来自外部网址的图像,而不是将其保存到他们的电脑,然后将其上传到我的服务器。

这是我到目前为止所想出的:

            $filename = $inputs['image_url'];

            if(getimagesize($filename)){
                // Get new dimensions
                list($width, $height) = getimagesize($filename);
                $new_width = 100;
                $new_height = 100;

                // Resample
                $image_p = imagecreatetruecolor($new_width, $new_height);                                           

                //a check needs to be done here $image = imagecreatefromjpeg($filename);
                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

                $filename = "profile_pictures/". md5( uniqid(rand(),true) ).".jpg";

                imagejpeg($image_p,$filename,100);
            }else{
                echo 'This is not an image';
            }

该代码可以很好地下载 .jpg 图像,但我也想支持其他文件类型。

我需要以某种方式检查图像的文件类型,以便我可以保存具有不同文件类型的其他图像......

                if($extension=="jpg" || $extension=="jpeg"){
                    $image = imagecreatefromjpeg($filename);
                }else if($extension=="png"){
                    image = imagecreatefrompng($filename);
                }else{
                    $image = imagecreatefromgif($filename);
                }

有谁知道一个函数可以让我做到这一点?

预先感谢您的回复。


最直接的方式是,对于 GD 兼容性检查,您可以从字符串创建它:

$image = imagecreatefromstring(file_get_contents($filename));

如果加载失败,您就知道无法处理该图像。

但也看看getimagesize http://php.net/getimagesize,它还检查文件类型,而不仅仅是宽度和高度:

list($width, $height, $type) = getimagesize($filename);

第三个要素,$type,那么其中任何一个都是IMAGETYPE_XXX常数:

Value   Constant
1     IMAGETYPE_GIF
2     IMAGETYPE_JPEG
3     IMAGETYPE_PNG
4     IMAGETYPE_SWF
5     IMAGETYPE_PSD
6     IMAGETYPE_BMP
7     IMAGETYPE_TIFF_II (intel byte order)
8     IMAGETYPE_TIFF_MM (motorola byte order)
9     IMAGETYPE_JPC
10    IMAGETYPE_JP2
11    IMAGETYPE_JPX
12    IMAGETYPE_JB2
13    IMAGETYPE_SWC
14    IMAGETYPE_IFF
15    IMAGETYPE_WBMP
16    IMAGETYPE_XBM
17    IMAGETYPE_ICO

From exif_imagetype https://www.php.net/manual/en/function.exif-imagetype.php。如果将两者结合起来,您可以首先检查该类型是否适合您加载,然后检查是否可以加载它。

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

检查图像文件类型 的相关文章

  • 使用操作系统用户名/密码在 PHP 中进行身份验证?

    我想知道是否有一种方法可以使用 PHP 或者可能是其他一些 CGI 但最好是 PHP 来使用其操作系统 在本例中为 Linux Debian 5 用户名和密码来验证用户 可能的 难的 谢谢 一般来说 这种东西是特定于操作系统的 并与现有的身
  • 在 Android 上将大位图文件的大小调整为缩放的输出文件

    我的文件中有一个大位图 例如 3888x2592 现在 我想将该位图大小调整为 800x533 并将其保存到另一个文件中 我通常会通过调用来缩放位图Bitmap createBitmap方法 但它需要一个源位图作为第一个参数 我无法提供它
  • Stripe API - 代理后面的 PHP Curl 请求

    我正在尝试使用 php 和curl 在代理后面向 stripe api 发出请求 如果我不在代理后面 则以下内容有效 ch curl init curl setopt ch CURLOPT URL https api stripe com
  • 列出某个类的所有对象

    好的 我的问题如下 我有一个用这个构造函数描述宠物的类 public function construct name type age 所以我想做的是制作一些宠物对象 然后我想打印这个类的所有对象的所有属性 这样它看起来像this http
  • PHP和.htaccess认证解决方案

    这是布局 web root admin dir index php js img other files dirs dir files 到目前为止 我使用 htaccess passwd 保护管理目录 因为我希望对该目录中的所有文件 包括
  • 递归BBCode解析

    我正在尝试解析脚本中的 BBCode 现在 它可以无缝工作 直到我尝试缩进不仅仅是粗体或下划线的 BBCode 例如剧透 网址 字体大小等 然后它就会搞砸 这是我的代码 function parse bbcode text global d
  • 合并两个数字键关联数组并保留原始键

    我有两个这样的数组 array 11 gt 11 22 gt 22 33 gt 33 44 gt 44 array 44 gt 44 55 gt 55 66 gt 66 77 gt 77 我想组合这两个数组 使其不包含重复项并保留其原始键
  • PHP MS Word 文件页数

    实际上我正在尝试计算 ms word 文件的页数 我正在使用这个 php 脚本 但是 没有向我显示确切的结果 并且脚本不是那么快 谁能帮助我获得更好的脚本 word new COM word application if word echo
  • Laravel 资源策略始终为 false

    我试图允许用户在 Laravel 5 4 中查看自己的个人资料 用户策略 php public function view User authUser user return true 在 AuthServiceProvider php 中
  • 使用 PHP SDK 获取页面的最新 Facebook 帖子

    以下代码位于名为 facebook posts php 的文件内 我从索引文件中调用该文件 如下所示 然而 这段代码放到哪里 却没有任何反应 因此 成功和捕获错误都不会返回错误 正如我所见 我尝试过绝对网址 但这也不起作用 我隐藏了 api
  • 使用 php 和 sendmail 发送有关测试 docker 容器的电子邮件

    我用的是ubuntu 16 04 我有一个 测试 docker docker compose 容器运行 php 5 6 和 apache 2 4 在生产平台 没有docker 上 邮件是通过sendmail发送的 如何在docker容器上发
  • 如何在没有数据库的情况下创建AJAX分页?

    是否可以在没有 MySQL 帮助的情况下获取 AJAX 分页页面 难道我不能只添加一个包含我需要显示的文本和标记的 PHP 文件 然后通过单击页码将该内容提供给用户吗 那么可以用纯 jQuery 和 PHP 来实现吗 您会使用什么代码方法来
  • PDO::PARAM_FLOAT 不存在,为什么?

    我想知道为什么 PDO PARAM FLOAT 不存在以及什么可以替代它 没有 可能是由于隐含的舍入问题 只需使用PDO PARAM STR并使用将浮点数转换为字符串strval float or string float
  • 根据客户端发送 HTML 或 JSON 响应

    我有一个带有 Eloquent 实体及其各自的 Laravel 应用程序RESTful 资源控制器 http laravel com docs 5 0 controllers restful resource controllers 如下所
  • 有没有办法获取 PHP 中可用区域设置的列表?

    在Java中 你可以调用Locale getAvailableLocales 获取可用区域设置的列表 我期待 PHP 的同等功能Locale http php net manual en class locale php类 但找不到 有没有
  • JQuery 验证不起作用

    我有一种表单 其中一个输入类型的值为 名字 但这可以在 onfocus 函数上更改我想验证此输入字段 如果它为空白或 名字 我有两个 jQuery 文件jquery 1 4 2 min js jquery validate pack js
  • 下载表格 - 选择文件合并到 Zip 中

    我希望创建一个表单 用户可以从手册列表中进行选择 总共10个 他们可能只想下载 3 份小册子 或 6 份 或 1 份 或 9 份小册子 但想法是他们选择所需的小册子 然后用脚本组合一个包含所需小册子的 zip 文件 任何人都可以提出任何建议
  • 创建具有动态更新变量的数组

    我有一些 PHP 变量 它们的名称直接链接到它们包含的函数 是否有办法自动创建这些变量 以便我可以使用所有变量 00 200 这就是我现在正在做的事情 regdays00 is user reg matured 00 regdays02 i
  • PHP 启动:运行单元测试时无法加载动态库

    当我尝试运行单元测试时 出现此错误 PHP 警告 PHP 启动 无法加载动态库 bz2 尝试过 xampp php ext bz2 找不到指定的模块 xampp php ext php bz2 dll 找不到指定的模块 在未知的第 0 行
  • 未加载 Firebird 扩展

    我正在尝试在 PHP 中使用 Firebird 扩展 我有扩展文件 php pdo firebird dll php interbase dll in my ext文件夹 我将它们添加到我的php ini像这样文件 PHP PDO FIRE

随机推荐

  • 如何在浏览器历史记录中查找当前位置索引

    浏览器通过以下方式提供客户端会话中访问过的页面列表window history目的 这样 客户端代码可以在列表中向前和向后导航 使用history back history forward and history go 但是客户端代码如何确
  • jquery中如何检查div是否获得焦点?

    我正在尝试在我的视图中使用剑道网格 我想在按 Enter 键后在网格中创建新行 我可以通过编写以下代码来做到这一点 div div div div document body keypress function e if e keyCode
  • 除法作为乘法和 LUT ? / 快速浮点数除法倒数

    是否可以在表格中进行浮点除法的倒数 查找表 例如 1 f gt 1 inv f 怎么办呢 我认为一些掩模和移位应该应用到浮动以使 它是索引的一种形式吗 究竟会怎样呢 您可以像这样猜测一个近似的逆 int x bit cast
  • 为什么无法使用 DataContractSerializer 序列化对象?

    我正在尝试使用 DataContractSerializer 序列化类型 但出现以下异常 这不适用于 SOA 服务 但如果可能的话 我仍然想使用 DataContractSerializer 我正在使用 Net 3 5 SP1 类型 Sys
  • Python 3.5 中的类型提示是什么?

    Python 3 5 中最受关注的功能之一是类型提示 一个例子类型提示中提到本文 http lwn net Articles 650904 and this one http lwn net Articles 640359 同时还提到负责任
  • jquery从字符串到时间的转换

    我正在开发一个系统 它以以下格式记录一天中的各个时间 06 53 22 or 19 23 58作为例子 谁能告诉我是否可以将此字符串转换为 javascript 构造 我可以用它来比较一天中的时间 您可以这样解析时间 function ti
  • 使用 -fPIC 编译的程序在跨过 GDB 中的线程局部变量时崩溃

    这是一个非常奇怪的问题 只有当程序编译时才会出现 fPIC option Using gdb我能够打印线程局部变量 但单步执行它们会导致崩溃 thread c include
  • WiX 中的新对话框,单击“后退”会跳过该对话框

    我是 WiX 的新手 正在尝试通过添加新的对话框来自定义对话框队列 新对话框的名称为 ServerChoice 流程为 SetupTypeDlg 完整或典型 ServerChoice verifyReadyDlg or SetupTypeD
  • Tomcat ExpiresFilter 无法正常工作

    我无法让 Tomcat 发送具有正确过期定义的图像 浏览器不断发送对已下载图像的 get 请求 Tomcat 响应 304 我想要的是 Tomcat 将使用正确的 expires 标头响应初始请求 并且没有任何 Last modified
  • 这是 n 层架构的正确实现吗?

    我在过去一年左右的时间里一直在学习 C 并尝试在此过程中融入最佳实践 在 StackOverflow 和其他网络资源之间 我认为我处于正确分离我的关注点的正确轨道上 但现在我有一些疑问 并希望在将整个网站转换为这个新网站之前确保我走的是正确
  • 将 null 值视为空元素的 XmlSerializer

    我正在编写一个小型 C 应用程序 它需要能够以 XML 形式读取 写入一些配置数据 我通过创建一些简单的模型类来做到这一点 其属性具有XmlElement在需要的地方添加属性 并通过一个XmlSerializer 我想要XmlSeriali
  • DBSCAN 算法可以创建少于 minPts 的簇吗?

    我刚刚编写了 DBSCAN 算法 我想知道 DBSCAN 算法是否可以允许集群中的点数少于所使用的 minPts 参数 我一直在使用http people cs nctu edu tw rsliang dbscan testdatagen
  • 在 kableExtra 表中合并迷你图

    我正在尝试创建一个带有副标题和迷你图的表格 我可以创建带有副标题的表格kableExtra包裹 我可以创建一个带有迷你图的表格formattable and sparkline包裹 但是 我无法将两者结合起来 有办法吗 我看见this ht
  • Visual Studio v.09 中的 Qt 与 C#/.NET?

    你们中有人有工作经验吗 Qt http en wikipedia org wiki Qt toolkit 和 Visual Studio 中的 C 它是否可能 易于一起使用 我已经搜索了 Qt 的 C 绑定 但所有项目似乎都已被放弃 我正在
  • python“导入错误:无法导入名称 urandom”

    不知何故 我的 python 被破坏并发出错误 jseidel EDP15 etc default python c import random Traceback most recent call last File
  • Windows 右键单击​​上下文菜单 + 子菜单

    如何在 Windows 上下文菜单中创建子菜单条目 我可以创建主菜单 但我也想关联一些子菜单 此外 如何将图标关联到菜单项 None
  • 使用 Ruby on Rails 的范围滑块

    使用Ruby on Rails 我的滑块代码如下 这给了我滑块如下 但我想要范围滑块 如下所示 它有两个滑块并给出两个值 something sliderjquery 方法 我在 ruby 中的代码应该是什么来显示滑块 如第二张图所示 我认
  • 如何使用 php mysqli 将事件的实时时间插入数据库?

    我正在尝试添加检查记录更改的日期时间 我在表中使用日期时间数据类型 date added datetime DEFAULT 0000 00 00 00 00 00 我使用以下 php 内置函数用于查询中的日期时间列 date Y m d H
  • ionic update-notifier-cordova.json' 您无权访问此文件

    我试图在 iOS 上运行 ionic 但它抛出一个错误 发生了什么 ionic run ios usr local lib node modules cordova node modules update notifier node mod
  • 检查图像文件类型

    我正在尝试向我的网站添加一个功能 用户可以将其个人资料图片设置为来自外部网址的图像 而不是将其保存到他们的电脑 然后将其上传到我的服务器 这是我到目前为止所想出的 filename inputs image url if getimages