【问题标题】:Constructing a JPEG image from byte array从字节数组构造JPEG图像
【发布时间】:2013-10-08 10:43:34
【问题描述】:

我正在尝试使用 PHP 从字节字符串构造 JPEG 图像。我了解 base64 解码和编码部分,但现在我的部分数据如下所示:

FF D8 FF FE 0 24 65 0 EF 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F0 0 40 1 B 0 32 12 B 51 4 51 4 0 0 FF DB 0 84 0 3 2 2 2 2 2 3 2 2 2 3 3 3 3 4 7 4 4 4 4 4 8 6 6 5 7 A 9 A A A 9 A 9 B C 10 D B C F C 9 A E 13 E F 10 11 12 12 12 B D 13 15 13 11 15 10 11 12 11 1 3 3 3 4 4 4 8 4 4 8 11 B 46 15 73 95 5C 12 7 5A E3 75 82 9A C3 67 D7 6A 90 8A 1B 78 A 88 5B 30 CE B8 F4 3F CC 36 54 E5 0 C5 AC AF D4 B0 2B 45 A3 D3 CA 29 8F 77 AD D6 C9 13 B3 A6 2F FC....

我知道这是一个来自 arduino 相机的 jpg,使用 POST 请求发送到我的 PHP 脚本,FF D8 标志着 JPG 的开始,但这就是我所知道的。

我的问题是这个字符串,如何将其转换为 base64 或我可以使用 PHP 上传的正确 jpg 图像?

编辑:我尝试使用 file_get_contents("temp.jpg") 解码一个实际的 jpg 文件,我得到了这个:

137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 0 200 0 0 0 200 8 6 0 0 0 173 88 174 158 0 0 32 0 73 68 65 84 120 94 237 157 7 92 20 199 23 199 127 32 216 197 130 40 216 187 216 131 93 99 47 81 35 118 141 189 197....

接近但不完全相同的格式。

谢谢。

【问题讨论】:

    标签: php image arduino jpeg


    【解决方案1】:

    您有多种选择,但我目前无法测试它们以了解哪些方法可行。

    1. hex2bin 函数在 PHP ≥ 5.4.0 中可用,并将十六进制转换为二进制字符串。但是请注意,您可能必须在转换之前从字符串中删除空格。

    2. 如果您运行的是较低的 PHP 版本,则可以改用 pack('H*', $string) 来获得相同的结果。同样,没有空格。

    3. 以上两种方法得到的二进制字符串,都可以通过base64_encode转成base64。

    4. 最后,imagecreatefromstring 应该可以处理 base64 数据,如果我没记错的话。

    不保证这些都会起作用,因为我目前无法检查,但没有其他答案,所以希望它有所帮助。祝你好运!

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 2011-11-15
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多