0

我正在尝试使用 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....

关闭但不完全相同的格式。

谢谢。

4

1 回答 1

0

您有几种选择,尽管我目前无法测试它们以查看哪些可能有效。

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

  2. 如果您运行的是较低的 PHP 版本,则可以使用它pack('H*', $string)来实现相同的结果。再次,没有空格。

  3. 使用上述任一方法获得的二进制字符串都可以使用base64_encode.

  4. 最后,imagecreatefromstring如果我没记错的话,应该使用 base64 数据。

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

于 2013-10-02T05:39:20.193 回答