我在 python 服务器上创建了一个 PIL 图像字符串:
frame = cv.CaptureFromCAM(0)
image = Image.fromstring('RGB', cv.GetSize(frame), frame.tostring(), 'raw', 'BGR')
buffer = cStringIO.stringIO()
image.save(buffer,'JPEG')
udptransmit(buffer.getvalue())
我有一个 java 客户端试图读取传输的图像字符串并修改 jpeg。然而,这似乎不起作用。我创建了一个 python 客户端只是为了检查,我可以使用对 pygame 的 load 方法的调用正确地修改 jpeg。从python发送的字符串包含字符6:10 = JFIF,这是正确的格式(也被python的imghdr模块识别。在java中,我试过了
只需将接收到的字符串的字节内容写入文件并使用 .jpeg 扩展名命名即可。该文件不是有效的 jpeg。
ImageIO
用于从字符串中读取字节。这会产生一个空图像。试图
ImageReaderByFormat('JPEG')
用这个来获取和解析字节。这给了我一个错误说明'Image is not a JPEG, starts with 0x...
'
我真的不明白为什么 python 将字符串识别为有效的 jpeg 而 java 没有。两者是否使用不同的 jpeg 解码器?即使他们这样做了,也不应该验证或拒绝字符串吗?