PHP从url下载jpeg图像

ver*_*h23 5 php gd jpeg

我有一个简单的测试代码

imagecreatefromjpeg("http://www.eventmag.ru/uploads/users/483/11483/event/logo/14632/5ee58096b7238c30.jpg");
Run Code Online (Sandbox Code Playgroud)

但它无法工作

gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x89 0x50
PHP Warning:  imagecreatefromjpeg(): 'http://www.eventmag.ru/uploads/users/483/11483/event/logo/14632/5ee58096b7238c30.jpg' is not a valid JPEG file in /var/www/site/releases/test.php on line 5
Run Code Online (Sandbox Code Playgroud)

什么问题?PHP 5.4.4-14

gd

GD Support => enabled
GD Version => 2.0
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.4.9
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => unknown
PNG Support => enabled
libPNG Version => 1.2.49
WBMP Support => enabled

Directive => Local Value => Master Value
gd.jpeg_ignore_warning => 0 => 0

gettext

GetText Support => enabled
Run Code Online (Sandbox Code Playgroud)

我通过php cli执行脚本.

Jon*_*art 14

您尝试下载的图像实际上是PNG,而不是JPEG.

在此输入图像描述

是的,我知道URL结束.jpg但这并不意味着它实际上是一个JPEG图像.

imagecreatefromstring()能够从其标题中自动检测支持的图像类型.所以你应该能够做到这样的事情:

$image_data = file_get_contents('http://www.example.com/image.jpg_or_png_or_whatever');
$img = imagecreatefromstring($image_data);
Run Code Online (Sandbox Code Playgroud)