【问题标题】:convert binary data to image cURL GET request将二进制数据转换为图像 cURL GET 请求
【发布时间】:2013-02-15 06:29:07
【问题描述】:

我正在尝试访问返回 jpeg 图像的 Web 服务。它在 URL## Heading ## 中需要两个变量 time_sent 和 user_id。

这是我的代码:

   $ch = curl_init();
   $options =  array(

            CURLOPT_URL => 'www.example.com/service/?time_sent=time&user_id=user',
            CURLOPT_HTTPHEADER => array('Authorization-Token:' . $api_key, 'Content-type: image/jpeg'),
            CURLOPT_ENCODING => "",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPGET => true,
            CURLOPT_CONNECTTIMEOUT => 60,
            CURLOPT_TIMEOUT => 60

        );
    }
    curl_setopt_array($ch, $options);
    $response = curl_exec($ch);

    if(!curl_errno($ch)){
        curl_close($ch);
        $img = imagecreatefromstring($response);
        imagejpeg($img);
        imagedestroy($img);
    }
    else{
        curl_close($ch);
        return curl_error($ch);
    }

这是我的输出:

ÿØÿàJFIFÿþ>创建者:gd-jpeg v1.0(使用 IJG JPEG v80),默认 质量ÿÛC $。 ",#(7),01444'9=82<.342> 2!!2222222222222222222222222222222222222222222222222ÿÀÈ•"ÿÄ
ÿĵ}!1AQa"q2'¡#B±ÁRÑð$3br,
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–~~™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÄÆÇÈÉÊÒÓÔÕÖרÙÚáâãää÷æçèéêñòó>õööøùùúÿ
ÖÜ›æ©lüAqoÕÙ«(¾æçîÔEUºSäˆæŸâ¿ò¼Õº'¤¨®Ž¬µåÙ¾]Õ¥i¬ÜÙºì—å_á¨äÑÓk3|ÕËx·^¢ujþ‹Å~»ä—ø¿Ú¬ Ýy[ûA?º”cÊ8™òîÿj~?Öí©vî¦lÚû«Qšqí1šŠ‰±E2¡4H•õm«÷k–ø†ÒÞø¢ÊÍÓ÷®êêtiâK®_/Þ¬]7^+ó6+Ä© ÷·W$yyKŸÅÌe$B$Ø‹M¹e··i–²µmQ–gŠÙÕ]k*Ù5=YÒßÍÜÎßuj£b¹½ÒY®.õyÚÒÆ•Ÿø–¦¶ø_¬N-ʲ(þõïxfÓF²‹÷éyltö@ªrVð‡ ,N~{ÈùwXðãØM·gûß5bM¦²¯ÿe^ãâû+ifw ªª¿7ûÕæšŒVêÿ#n¨æ÷¹#ÊqO§ÿµP2íêµÐÏ2ðµ›-»V„Jizvê±5¿Ë÷j©ù~SAŸ("í}Õ,Ëòn¦V½SLÉ䪊`Coq-¼©,mµ –¶ŸWûz'™þµWkµXiÑJÈô´¹TÕbæÊæÞ(¦'DºÍVô;xµ$µ··\

谁能告诉我我做错了什么?

【问题讨论】:

  • var $result 的定义在哪里?
  • Content-type 标头由响应发送,请求需要 Accept 标头。检查stackoverflow.com/questions/5661596/…
  • 你做错了什么?好吧,对于初学者来说,您没有设置 CURLOPT_BINARYTRANSFER,并且给定输出,您可能没有在对客户端的响应中设置 mime 类型。是否有理由使用 GD 将响应转换为 jpeg(当它已经是一个时)
  • @symcbean,imagejpeg 产生我的输出。因为我使用的是returntransfer,所以不需要BINARYTRANSFER。我不认为我需要哑剧类型。这是下面提供的,但我有多个标题,所以我必须找到解决方法。

标签: php image image-processing curl binary-data


【解决方案1】:

谁能告诉我我做错了什么?

没什么,看起来像一个健康的 JPG :) 发送一个

header("Content-type: image/jpeg");

在执行imagejpeg($img); 之前,它应该可以工作。

【讨论】:

  • 我在 cURLOPT_HTTPHEADER 选项中发送了标头。
  • @pekka 这张照片看起来像什么?
  • @OneSneakyMofo:这无关紧要。这只适用于 curl 请求本身。例如服务器 -> 图像服务器。您需要从 php 设置 RESPONSE 的内容类型,例如你的服务器 -> 你的浏览器。
  • @Billy 我认为我可以在那里看到玛丽莲梦露。还有星星。
  • 脚本中的其他地方,您已经执行了输出。你必须找到哪里,并消除/缓冲它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多