Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Curl 从带有卷曲编码内容的URL保存图像时出错_Curl_Image Processing_Download_Character Encoding_Encode - Fatal编程技术网

Curl 从带有卷曲编码内容的URL保存图像时出错

Curl 从带有卷曲编码内容的URL保存图像时出错,curl,image-processing,download,character-encoding,encode,Curl,Image Processing,Download,Character Encoding,Encode,大家好,我正在尝试从URL获取一个图像到我服务器上的一个文件夹,但是我在这个过程中遇到了很多问题。我知道这个url(图片)的内容是另一个字符集,或者类似的东西,我只知道它在预览时显示了很多中文字母,在回复时显示了很多奇怪的字母。代码是: $ch = curl_init ($URL); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, t

大家好,我正在尝试从URL获取一个图像到我服务器上的一个文件夹,但是我在这个过程中遇到了很多问题。我知道这个url(图片)的内容是另一个字符集,或者类似的东西,我只知道它在预览时显示了很多中文字母,在回复时显示了很多奇怪的字母。代码是:

        $ch = curl_init ($URL);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_ENCODING, "");
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
        $rawdata=curl_exec($ch);
        curl_close ($ch);

       * $charsets = array("UTF-8","ISO-8859-1","GB2312"); 
       * var_dump(mb_detect_encoding($rawdata,$charsets));
       * var_dump($rawdata);

        $fp = fopen($local_file,'w'); 
        fwrite($fp, $rawdata);
        fclose($fp) 

  //  * -> trying to debbug
这项请求的答复是:

•在预览中(第一行和第二行是我的var_转储)

•在响应上(第一行和第二行是我的var_转储)


当我尝试在一个URL上应用这段代码时,这个URL上的图像没有这种特殊字符,它工作得很好,可以下载到我的服务器上。。。但是,当答案包含这些中文字母时,它不会将图像复制到我的文件夹中。

您太困惑了,您看到的奇怪字符是您的浏览器试图将JPG二进制数据呈现为文本(ASCII或unicode或其他)。删除var_转储,然后运行

header("content-type: image/jpeg"); 
echo $rawdata;
相反,如果您告诉浏览器这是一个JPG图像,请按此方式渲染它,浏览器将尝试将其渲染为JPG图像而不是文本,您可能会得到一张图片。:)


此外,如果您使用的是危险的非便携式fopen模式,请将
w
替换为
wb
中的
$fp=fopen($local_file,'w'),并且它将是可移植的(您当前的fopen模式在基于linux/mac/bsd的OSs中可以正常工作,但会对基于Microsoft Windows的操作系统造成严重破坏,因为它有一个隐式的“文本模式”,其中
\n
自动转换为
\r\n
,但更改为
wb
会将其更改为二进制模式,即使在基于Windows的系统上也是如此。)

您非常困惑,您看到的奇怪字符是您的浏览器试图将JPG二进制呈现为文本(ASCII或UTF-8或其他格式),删除变量转储,然后运行
标题(“内容类型:图像/jpeg”);echo$rawdata;
,然后告诉浏览器
这是一个JPG图像,将其呈现为这样的
,浏览器将尝试将其呈现为JPG图像而不是文本,您可能会得到一张图片。:)对不起,我没有插入所有代码!在这部分之前,有一个regex函数来获取文件的类型
pr例如,匹配(“/(.png.jpg)/”,$url,$IMG_type);$local_file=$IMG_destiny.$Name_PROD.“-”$IMG_type;
这个图像的字符集是一种中文,它不是一个普通的jpg二进制文本,点击这个链接()查看。我已经在fopen()上更改为“wb”。非常感谢您的帮助!!JPG图像没有字符集。当然,可能有一些中文字符集文本作为嵌入元数据,但JPG二进制格式根本没有任何字符集。请向我显示一个实际的url,为您实际尝试下载/显示的文件之一提供服务,我会亲自检查,并让您知道wtf即将发布我试图下载这两张图片,第一张我下载没有问题,但是第二张不行1-w1.ezcdn.com.br/ventureshop/fotos/grande/6fg1/besta-profissional-jaguar-black-175lbs-quiver-oculos.jpg//2-w1.ezcdn.com.br/ventureshop/fotos/grande/8fg1/adapter-mount-p-pesca-c-besta-ams-bowfishing.jpg