Php 不带扩展名保存图像

Php 不带扩展名保存图像,php,image,Php,Image,我正在使用一个函数将图像从URL保存到磁盘。适用于传统格式(jpg/gif/png),但不适用于webp文件。我使用imagecreatefromwebp()函数将图像保存为jpg,但它只是黑色的 我现在使用的一段代码: $source = "https://somethinghere"; $stype = explode(".", $source); $stype = $stype[count($stype)-1]; switch($stype) { case 'gif': $imgh

我正在使用一个函数将图像从URL保存到磁盘。适用于传统格式(jpg/gif/png),但不适用于webp文件。我使用imagecreatefromwebp()函数将图像保存为jpg,但它只是黑色的

我现在使用的一段代码:

$source = "https://somethinghere";
$stype = explode(".", $source);
$stype = $stype[count($stype)-1];

switch($stype) {
 case 'gif':
  $imghandle = imagecreatefromgif($source);
  echo "Found .gif <br>";
  break;
case 'jpg':
  $imghandle = imagecreatefromjpeg($source);
  echo "Found .jpg <br>";
  break;
 case 'jpeg':
  $imghandle = imagecreatefromjpeg($source);
  echo "Found .jpeg <br>";
  break;
 case 'png':
  $imghandle = imagecreatefrompng($source);
  echo "Found .png <br>";
  break;
 default:
  $imghandle = imagecreatefromwebp($source);
  echo "Found default <br>";
  break;
}   
$source=”https://somethinghere";
$stype=爆炸(“.”,$source);
$stype=$stype[计数($stype)-1];
交换机($stype){
案例“gif”:
$imghandle=imagecreatefromformgif($source);
echo“Found.gif
”; 打破 案件‘jpg’: $imghandle=imagecreatefromjpeg($source); echo“Found.jpg
”; 打破 案例“jpeg”: $imghandle=imagecreatefromjpeg($source); echo“Found.jpeg
”; 打破 案例“png”: $imghandle=imagecreatefrompng($source); echo“Found.png
”; 打破 违约: $imghandle=imagecreatefromwebp($source); 回显“找到默认值
”; 打破 }
如何确定
$type
类型?当我在链接中的图像上单击“另存为”时,它表明这是一个.webp文件(至少在Chrome中,IE 11不会像你提到的那样下载它)。你知道文件扩展名实际上并没有告诉你文件类型吗?这只是一个暗示,按照惯例。我可以将该文件重命名为.xlsx,它仍然是一个图像。同样,我不能给它任何扩展,它仍然是一个图像。而且我甚至不确定你发布的这个链接的相关性。既然你声称连下载都不能,那它和你的代码有什么关系?最后,你的代码中的
$type
$source
是如何填充的?如果你有一个没有扩展名(或扩展名不正确)的文件,你必须找到其他方法来确定它可能是什么类型的图像,假设它是一个图像,否则你必须抛出一个错误。好的,也许我应该改变这个问题。我知道这是一个webp文件,但如何使用php下载它?我正在使用imagecreatefromwebp()将其保存为jpg,但它仍然是黑色的。URL只是我想下载的一个文件示例。添加了$type代码,这是源URL的简单分解。如果您使用imagecreate。。。函数,那么您必须已经下载了它。如果不先从远程服务器获取文件,PHP无法处理该文件。我猜该文件不是一个真正的webp文件,或者在某种程度上有点损坏,PHP无法处理,或者您获取了错误的资源。很多可能性。找到另一个WebP文件并尝试。手动下载该文件(您可以使用Chrome),将其保存到磁盘并从那里进行处理…尝试缩小问题范围。