【问题标题】:Binary image data not converting into image二进制图像数据未转换为图像
【发布时间】:2016-02-16 05:14:28
【问题描述】:
 $data = b"""
    \x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x18\x00h\x03\x00\x00\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00X;ÿ%\x1Cï\t$÷\x07\x11ÿ$\x16ÿ\x11\x1Eü\x13\x19ôçó÷ÈÈø\x07\fû#\x1Fÿ\e\x15ÿ\x0E\x17û,$ú\x13\x17èAHÿODÿ%\x1Dÿ\t\x11ÿ\x18\x0Eú)\x04ô\x1C\n
    ñ-\x1AóïÝÿµ±ý\f\tï\x1F\x07ï \x07ñ\x19\x11ø%\tÿ(\x1AÿTOÿFLó!\x1Cô21ý•›þ©÷—–þ““÷üôÿêåÿŽÿ£‘ü¦žõƒ“ý'\x1Dó\e\x1DóISôELõ\e\x0FñO?þìüÿüÿ÷ñüÿêüÿúþÿûþÿóúÿÿúÿøÿõÒíÿ,)ô\e\e÷ORú;Mø\x13\fýN4ÿðõÿÿûýÿüÿÿÿéÿþ÷üÿïÿÿîÿþÿþþþÛãÿ*\eÿ$\x15ÿWLü0Aü\r\rùL;üòùÿÿýþϰ™’f\x1F•`.a+•g1ØÌ°ÿÿùÞáÿ$!ò\x15\x16ôACÿxÿYRùuëõü÷ÿþÿÎ¥„~6\x00C\x01@\x03‹3\x04àϨÿÿøëåübkëXañ}ÿÿÿòø÷ÿÿûÿÿÿéöïþͤ‹‹?\x00˜S\x03”M\x039\x11ÍÓ°øöõÿþûøùÿÿþýÿÿò‹}ÿLYûmoýøôÿÿþüǬl~A\x00‡D\x00E\x00z7\x06æØ£öÿéìîÿhe÷Saúˆ~ÿBFø\x00\fèD>÷ýüÿÿÿøÔ¨›”[\x1Ee*£c-•Z3ëÍÂÿÿôëãÿ,\x12ø\x06\fóFOöIIÿ\x12\x0FøM9þöþóÿÿôÿöÿÿþôÿøÿÿøÿÿüùý÷ÿûÿùìêÿ:\x14ÿ\x1F\x16ÿKRý?Gþ\x18\x1CñJBúîúÿöÿòúÿþÿÿþÿúýÿÿñýÿþñúýøÿùçóÿ7,ç\x1C ñCMþJAÿ&\x17ô6(ü”ŽÿŸ™ÿŸý üþûöçåñŸÿ˜•øŸ˜ÿŒÿ,&é&\x1AðYNÿQIÿ+\x1Cù\x16\x14ÿ\v\x11ø\t\tï\x06\fù\x0E\x0EöÑ÷ü©Ãÿ\x02\x00ô\x08\rò\f\x06í\n
    \x0Fô\x18\x18ÿ&\x15ùXOÿ;Aþ"\x1Eé\x1C\x1Eø\x19 ó'\x1Aò\e\x13ô3#ýææÿµ°ÿ \x12ì+\x1Eö5\eÿ\x19\eõ\e ÿ$\x1DðFLÿýüÿÿþúøøÿøÿþÿþýîþÿíõÿÿÿóÿÿùêýÿúÿÿÿõÿöþ÷øÿþÿÿøûùÿ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
    """

以上数据为图像二进制数据。 我正在将上述二进制数据转换为实际图像。我写的代码如下:

注意:我正在使用图像干预包 - Laravel,并且我已经编写了用于显示银行(金融机构)网站图标的代码。此 api 由 Yodlee Interactive 提供。

$img = Image::make($data)->save('images/favicons/icon1.jpg');
 return $img->response();

$img = Image::make($data)->save('images/favicons/icon1.ico');
   return $img->response();

当我执行代码时,我收到以下错误,

NotReadableException in Decoder.php line 91:
Unable to init from given binary data.

【问题讨论】:

标签: php laravel imagemagick gd yodlee


【解决方案1】:

您收到的响应不是字节数组,而是字符串,所以您可能必须先转换为字节数组,然后再转换为图像。

这应该会给你一些开始的指示。

<?php

   //Here write your code to get $byte_array
    $data = base64_decode($byte_array);
    $im = imagecreatefromstring($data);
    header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im); 
?>

或者你可以参考这些链接。

Converting a byte array into an image using PHP and HTML

http://www.zoubi.me/blog/php-get-image-byte-array

【讨论】:

    【解决方案2】:

    请使用以下示例代码获取验证码图片。

    $bytes = array(Paste byte-array from Yodlee-API response here Ex: 0,2,3,4,1,1,1);
    $byteArray = implode(array_map("chr", $bytes));
    $imgData =base64_encode($byteArray);
    $img = "<img src= 'data:image/jpeg;base64,$imgData' />";
    print($img);
    

    希望这会有所帮助。

    问候,

    Krithik N

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 2013-08-13
      • 2012-05-26
      • 2013-02-10
      相关资源
      最近更新 更多