Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在不启用fopen包装器的情况下,是否可以使用URL作为imagecreatefromjpeg()的源?_Php_Url_Image Resizing_Imagecreatefrompng - Fatal编程技术网

Php 在不启用fopen包装器的情况下,是否可以使用URL作为imagecreatefromjpeg()的源?

Php 在不启用fopen包装器的情况下,是否可以使用URL作为imagecreatefromjpeg()的源?,php,url,image-resizing,imagecreatefrompng,Php,Url,Image Resizing,Imagecreatefrompng,我知道可以使用imagecreatefromjpeg()、imagecreatefrompng()等,并使用fopen()将URL作为“文件名”,但由于安全问题,我无法启用包装器。有没有一种方法可以将URL传递到imagecreatefromX()而不启用它们 我也尝试过使用cURL,这也给我带来了问题: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://www.../image31.jpg"); //Actually complet

我知道可以使用imagecreatefromjpeg()、imagecreatefrompng()等,并使用fopen()将URL作为“文件名”,但由于安全问题,我无法启用包装器。有没有一种方法可以将URL传递到imagecreatefromX()而不启用它们

我也尝试过使用cURL,这也给我带来了问题:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.../image31.jpg"); //Actually complete URL to image
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

$image = imagecreatefromstring($data);
var_dump($image);

imagepng($image);
imagedestroy($image);

您始终可以将图像(例如,使用cURL)下载到临时文件中,然后从该文件加载图像。

您可以使用cURL下载文件,然后将结果导入
imagecreatefromstring

例如:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $imageurl); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks!
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image.
    $data = curl_exec($ch);
    curl_close($ch);

    $image = imagecreatefromstring($data);

您甚至可以使用实现一个基于cURL的“http”流包装器。

+1,这比我建议的使用临时文件要好。我试图寻找像
imagecreatefromstring
这样的函数,但在所有其他
imagecreatefrom*
函数中都没有找到它。阿兰感谢CURLOPT_RETURNTRANSFER,我已经忘记了这个函数。我还添加了CURLOPT_BINARYTRANSFER。。。似乎有道理。我知道这是我的答案,但我在显示图像时遇到了问题。见上面的代码。所以我不知道你正在使用的URL,但我只是自己测试了一下,似乎很有效。我在一些项目中使用过ImageMagick的这种方法,在我们的案例中,出于安全原因,我们需要使用代理服务器,所以这可能是您的问题?var_dump说:类型(gd)的资源(65)尝试转储
$data
,以查看您实际返回的内容。string(215063)”����进出口*�����(1�2҇i� ��' ��'Adobe Photoshop CS5 Macintosh2012:08:28 21:47:46�0221�����内华达州(~�嗯����土坯��阿多贝���� ��>�"�� ��?3!1AQa“q�2.���B#$R�b34r��C%�s���cs5���&D�TdE,它在数百行中继续这样做。它在数百行中继续随机字符。不包括字符串(215063)或Macintosh。。。。