PhpPresentation imagecreatefromstring():数据不是可识别的格式 - PHP7.2

2024-06-19

我正在尝试使用 PhpPresentation 来阅读sample.pptx使用文档中为读者提供的简单说明进行文件处理,我得到:

imagecreatefromstring(): Data is not in a recognized format

我已检查是否已安装 PHP7.2-gd 以及所有其他依赖项。

My Code:

require_once 'vendor/autoload.php';

use \PhpOffice\PhpPresentation\PhpPresentation;
use \PhpOffice\PhpPresentation\IOFactory;
use \PhpOffice\PhpPresentation\Style\Color;
use \PhpOffice\PhpPresentation\Style\Alignment;

$oReader = IOFactory::createReader('PowerPoint2007');
$data = $oReader->load(__DIR__ . '/sample.pptx');
var_dump($data);

有人可以帮助我理解这个问题吗?


窥探之后PHP 源代码 https://github.com/php/php-src/blob/master/ext/gd/gd.c#L2287,对“图像从字符串创建 http://php.net/manual/en/function.imagecreatefromstring.php" 函数,我发现它只处理以下图像格式:

  • JPEG
  • PNG
  • GIF
  • WBM
  • GD2
  • BMP
  • WEBP

PHP 通过检查图像签名来识别“imagecreatefromstring”函数参数中包含的图像格式,如下所示here https://oroboro.com/image-format-magic-bytes/.
当检测到未知签名时,会发出警告“数据不是可识别的格式”。
因此,对于您遇到的错误的唯一合理的解释是您的 PPTX 文件包含不属于上述格式之一的图像.
您可以通过将其扩展名从“.pptx”更改为“.zip”然后打开来查看 PPTX 文件中图像的格式。
你应该看到这样的东西:

Archive:  sample.pptx
  Length      Date    Time    Name
---------  ---------- -----   ----
     5207  1980-01-01 00:00   [Content_Types].xml
      ...
     6979  1980-01-01 00:00   ppt/media/image1.jpeg
     6528  1980-01-01 00:00   ppt/media/image2.jpeg
   178037  1980-01-01 00:00   ppt/media/image3.jpeg
   229685  1980-01-01 00:00   ppt/media/image4.jpeg
   164476  1980-01-01 00:00   ppt/media/image5.jpeg
     6802  1980-01-01 00:00   ppt/media/image6.png
    19012  1980-01-01 00:00   ppt/media/image7.png
    32146  1980-01-01 00:00   ppt/media/image8.png
      ...
---------                     -------
   795623                     74 files

如你所见,我的样本.pptx文件包含一些 JPEG 和 PNG 格式的图像。
也许您的示例文件包含一些带有矢量格式(WMF 或 EMF)图像的幻灯片;我不清楚(因为我没有找到任何参考资料)the docs https://media.readthedocs.org/pdf/phppowerpoint/latest/phppowerpoint.pdf) 是否支持这些格式。 最终您应该尝试使用其他 PPTX 文件,只是为了确保问题与特定文件无关(您可以在“测试/资源/文件 https://github.com/PHPOffice/PHPPresentation/tree/develop/tests/resources/files").
我搜索了 PowerPoint 文件支持的图像格式列表,但未能找到准确的答案。
我发现的唯一相关链接如下:

  • ECMA 376 Open Office XML 第一版 - 图像部分 https://c-rex.net/projects/samples/ooxml/e1/Part1/OOXML_P1_Fundamentals_Image_topic_ID0EGXDO.html#topic_ID0EGXDO
  • ISO/IEC 29500 办公室实施信息 标准支持 https://interoperability.blob.core.windows.net/files/MS-OI29500/%5BMS-OI29500%5D.pdf(2.1.32 第 1 部分第 15.2.14 节,图像部分,第 57/58 页)
  • Open XML 文档中的图像 https://blogs.msdn.microsoft.com/dmahugh/2006/12/10/images-in-open-xml-documents/(阅读页末的评论)
  • OpenXML 开发者论坛上的问题 http://openxmldeveloper.org/discussions/formats/f/15/p/418/944.aspx#944

这意味着 PPTX 文件中存在 TIFF 或 PICT (QuickDraw) 格式的图像也可能导致所考虑的错误。

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

PhpPresentation imagecreatefromstring():数据不是可识别的格式 - PHP7.2 的相关文章

  • Zend Framework 2 - 整数表单验证

    我有以下问题 我 根据教程 编写了一个表单验证 文本字段工作得很好 但整数字段的行为很奇怪 这是我的验证器 inputFilter gt add factory gt createInput array name gt zip requir
  • 在 LAMP 配置中创建个性化 URL

    在 LAMP 配置下创建用户个性化 URL 的最佳方法是什么 例如 可以按如下方式访问用户个人资料页面 http www website com profile php id 1 http www website com profile p
  • 有没有一种简单的方法来获取 PHP 中实例化类的文件?

    我想复制这个 myObject new object FILE class object protected path to caller public function construct file this gt path to cal
  • 从mysql数据库读取pdf文件

    我正在使用这个例子http www php mysql tutorial com wikis mysql tutorials uploading files to mysql database aspx http www php mysql
  • mysql - 如果日期不与现有日期重叠,则将日期范围插入日期列

    我有以下表结构 表名 available id autoincremetn acc id start date end date 1 175 2015 05 26 2015 05 31 2 175 2015 07 01 2015 07 07
  • 如何在 Ubuntu 16.04 上设置 Docker + PhpStorm + xdebug

    我的问题是当我开始监听端口时 xdebug 不起作用 我认为 PhpStorm 无法与 xdebug 链接 我刚刚得到调试器面板变量不可用 看来 xdebug 没有正确设置 使用的软件及版本 Ubuntu 16 04 LTS Docker
  • PHP 难以检查数组中的元素是否为整数类型

    我正在尝试检测一个或多个变量是否包含数字 我尝试了几种不同的方法 但并没有完全成功 这是我尝试过的
  • MySQL 无法使用 PHP 连接到本地主机上的服务器

    我正在使用 XAMPP 1 7 2 可以通过 cmd 和 SQLYog 连接到 MySQL 但不能以编程方式连接 这段 PHP 代码 conn mysql connect localhost root if conn die Could n
  • PHP:使用 imagemagick 将图像转换为 TIFF

    我正在尝试使用 imagemagick 将图像转换为 tiff 但在尝试写入文件时遇到问题 我收到一条错误消息 无法打开图片 错误 blob c OpenBlob 2584 这是我正在使用的代码 im2 new Imagick image
  • PHP从数组中获取键值

    当我把print r data 我得到以下内容 Array name gt Cheese 有办法拿到钥匙吗name在它自己的变量中 可能有这样的情况name可能email和其他值 Use array keys http php net ma
  • AWS SNS 参数电话号码无效

    我正在尝试学习 aws sns 服务从我的网络应用程序发送短信 我正在本地主机上工作 params array credentials gt array key gt iam key secret gt iam secret region
  • CodeIgniter“找不到您请求的页面。”错误?

    我在使用 CodeIgniter 时遇到问题 我已经检查了互联网上所有可能的解决方案 似乎对我的情况没有任何帮助 我不是一个大专业人士 这是我第一次使用 CodeIgniter 所以不要对我严厉 路线 php route default c
  • 是否可以动态添加代码/扩展类?

    我想为我的代码编写一种 插件 模块 系统 如果我可以在定义类后将内容 添加 到类中 那么事情会变得更加容易 例如 这样的事情 class foo public function a return b 上课了 现在我想在定义后向其中添加另一个
  • php洗一副牌

    我想使用 php 创建随机桥手的集合 我认为我可以将有序的卡片包编码为字符串 deal下面 我喜欢它有 52 个字母 同时考虑大小写 我发现了 php 函数str shuffle 所以我想我可以做以下事情 pack abcdefghijkl
  • JSON数据通过JS/AJAX转化为PHP

    Goal 我正在使用 coinmarketcap com API link https api coinmarketcap com v1 ticker convert EUR 预先我将他们的数据转换成 PHP 样本 现在我想使用AJAX J
  • 如何显示浏览器中发出的 API 请求的 symfony 分析器?

    我正在使用 Symfony2 FOSRest 捆绑包开发 REST api 我想知道是否有任何方法可以在开发模式下调用api app dev php 从浏览器 对应于Accept text html application xhtml xm
  • PHP 和 MySQLi 中没有选择数据库错误[重复]

    这个问题在这里已经有答案了 我必须从 MySQL 数据库中选择数据 我一直在寻找答案 但仍然没有找到 我正在学习W3School http www w3schools com php php mysql select asp 我的 MySQ
  • 将父产品名称添加到 WooCommerce 中的每个购物车项目名称中

    我想在购物车页面中显示父产品名称和子产品名称 购物车项目 以供我使用分组产品 我在链接产品 gt 添加子产品的分组产品下选择父产品数据作为分组产品 模板中的代码cart php echo apply filters woocommerce
  • 使用 MongoDB PHP 驱动程序时的安全问题

    我有在 MYSQL 上保护 sql 注入的经验 但是在使用 php 驱动程序的 MongoDB 上我应该注意什么 在大多数页面中 我通过 GET POST 和搜索 插入系统获取数据 我通过 UDID 其他字段进行搜索 并且可以插入任何字符串
  • PDO 和 Microsoft SQL:必须声明表变量“@P1”

    我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目 我正在使用的代码看起来与我在文档中找到的代码类似 但是 当我运行它时 我收到以下警告 警告 PDOStatement execute pdostateme

随机推荐

  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • JavaScript:从 JavaScript 调用锚标记的点击事件

    我有一个带有锚标记的页面 在我的 JavaScript 中 我设置HREF锚标记的属性基于一些 if else 条件动态变化 现在我想以编程方式调用锚标记的单击事件 我使用了下面的代码 但没有成功 var proxyImgSrc CostM
  • 如何使用 Jenkins 声明性语法登录 docker?

    我的目标是使用声明性语法从 DockerHub 上的私有存储库中拉取 推送图像 我已经用 id 配置了我的凭据xxxxxxxxxxx 我知道我可以使用编程语法来做到这一点如图所示 https jenkins io doc book pipe
  • 使用 XPath 获取属性

    给定一个像这样的 XML 结构
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • 开始使用 Honeycomb 进行 Android 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Delphi 将面板流传输至文件

    今天我有一个关于将表单的一部分流式传输到文件的问题 在此示例中 我使用 Tmemo 而不是文件来查看流 这是我的表格 表单右上角的面板有一些控件 如标签 编辑等 使用 保存面板 按钮将面板保存在 TStream 上 这里是代码 proced
  • 从代码动态更改多个文本视图的大小(没有“磁盘上”xml 主题)?

    我有 10 个文本视图在我的代码中 我想更改所有代码的字体大小 在我的布局中我使用了 style定义通用属性 但是我不知道一旦布局出现在屏幕上如何从代码中更改它们 我不想做的是更新 AND 对象 但只写在一处 我知道我可以使用应用主题但这假
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • 将 C# 反射代码移植到 Metro-Ui

    我正在尝试移植使用反射的现有 C 类 通用工厂 但我无法编译这段代码 Type types Assembly GetAssembly typeof TProduct GetTypes foreach Type type in types i
  • GWT MenuItem 选择后失去焦点

    我有一个简单的垂直一维菜单 菜单项不是固定的 它们根据从服务器接收的数据动态变化 所以我无法为它们编写修复代码 在 css 中 我声明选定的 MenuItem 为粗体 我的愿望只是让选定的菜单项在选择后保持粗体 但是当我单击它时 它失去焦点
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • 在 Elisp 中如何获取变量的初始值?

    在Emacs Lisp中 是否有一个函数可以获取由以下方式初始化的符号的初始值defvar 像some function如下图所示 defvar var initial value setq var changed value some f
  • scntool:无法转换文件,失败原因:*** -[__NSSingleObjectArrayI objectAtIndex:]:索引 1 超出范围

    我正在 Xcode 9 3 下开发一个基于 iOS 11 3 SceneKit 的项目 我有几个 dae 文件格式的 3D 模型 每当我构建项目时 其中一个模型不会被复制到最终的 iOS 包中 深入研究错误 我在复制捆绑资源构建阶段收到以下
  • 如何设置 Twitter 的嵌入时间线宽度百分比(响应式/流体设计)

    我正在寻找设置Twitter 的嵌入时间线 https dev twitter com docs embedded timelines 当您有固定的设计时 这很容易 但这不是我的情况 我实际上正在为新网站构建流畅且响应式的设计 我的问题是
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • React router.push 和 router.replace 之间的区别?

    有什么区别React 路由器推送 and 路由器 替换 路由器历史记录就像一个stack of routes 当您使用router replace 您将覆盖堆栈的顶部 当使用router push 它在顶部添加了一条新路线stack 路由器
  • F10键没被抓住

    I have a Windows Form and there overriden ProcessCmdKey However this works with all of the F Keys except for F10 I am tr
  • 如何从 Google Custom Search API 获取超过 100 个结果

    我正在尝试使用 Google Custom Search API 在 Java 中进行研究 因此 我需要为每个查询提供一个大的结果集 然而 我似乎仅限于前 100 个结果 这比我需要的要少得多 我使用这样的列表方法 list setStar
  • PhpPresentation imagecreatefromstring():数据不是可识别的格式 - PHP7.2

    我正在尝试使用 PhpPresentation 来阅读sample pptx使用文档中为读者提供的简单说明进行文件处理 我得到 imagecreatefromstring Data is not in a recognized format