PHP GD .ico 处理

PHP GD .ico handling

我的 PHP 网络应用程序的用户可以上传 PNG 和 JPEG 图像。上传算法如下:

  1. 通过文件名解析检查扩展名
  2. 通过 getimagesize() 检查扩展
  3. 通过 imagecreatefrompng()/imagepng() (imagecreatefromjpeg()/imagejpeg()) 重新创建图像
  4. 重命名图片
  5. 保存到文件系统

图像重建用于安全。一切正常。但现在我需要这个算法来处理 .ico 文件。似乎 GD 不适用于 .ico(没有像 imagecreatefromico() 这样的函数),所以我不知道如何实现算法的第 3 步。

感谢您的帮助或建议。

请参阅 https://github.com/lordelph/icofileloader composer-installable class,它可以将 .ico 文件加载到 GD 图像中。

例如:

$loader = new Elphin\IcoFileLoader\IcoFileService;
$im = $loader->extractIcon('/path/to/icon.ico', 32, 32);

有关从图标文件分析和提取图像的其他方法,请参阅文档。