1

有没有办法可以使用 createimagefromjpeg() 从 url 保存图像但允许所有图像文件类型?

很明显 createimagefromjpeg 只允许 jpeg / jpg。

这是我目前的流程:

    // create the image and save it
    $imagefile = iageURL;
    $resource = imagecreatefromjpeg($imagefile);
    // X amount of quality is the last number
    imagejpeg($resource, "images/covers/imagename.jpeg", 50);
    imagedestroy($resource);

这很好用,因为它可以让我降低图像质量。但是在尝试使用 jpeg / jpg 以外的任何内容时出现错误。

有没有解决的办法?或者也许是从 url 保存图像(降低质量)的更好方法。

克雷格。

4

1 回答 1

2

您需要检查文件类型 - 如果可以,最好的方法是检查 mime 类型,然后您可以进行切换并利用 GD lib 中的其他图像创建函数,例如imagecreatefromgif()imagecreatefrompng()等:

switch($mime_type) {
    case 'image/jpeg':
    case 'image/jpg':
        $img = imagecreatefromjpeg($filename);
        break;
    case 'image/png':
        $img = imagecreatefrompng($filename);
        break;
    case 'image/gif':
        $img = imagecreatefromgif($filename);
        break;
}

另一种选择是让您将图像的数据抓取到一个字符串中,然后使用imagecreatefromstring()从原始数据创建一个图像句柄:

$filename = 'http://yoursite.com/yourlogo.jpg';
$img = imagecreatefromstring(file_get_contents($filename));

从手册: These types will be automatically detected if your build of PHP supports them: JPEG, PNG, GIF, WBMP, and GD2.

于 2014-02-24T20:27:53.443 回答