Как правильно декодировать изображение отправленное через WebSocket
Как правильно декодировать строку, чтобы из нее получить изображение. На стороне клиента данные кодируются таким образом
def finger_detection(self):
image = GetFingerprint()
print(image)
print("Finger detected")
width, height = image.size
#image = np.asarray(image);
print("Send finger")
byteIO=io.BytesIO()
image.save(byteIO,format="PNG")
imageBuffer=byteIO.getvalue()
encodeBuffer=base64.b64encode(imageBuffer)
resp_data={
'action' : ResponseActions.RESULT_IMAGE_ACTION,
'payload' : str(encodeBuffer)
}
self.socket.send(json.dumps(resp_data))
print("---")
Код на стороне сервера
private onMessage(ev:globalThis.MessageEvent):any{
const incomingMessage:ClientEvent=JSON.parse(ev.data);
console.log(incomingMessage);
let buffer=new Buffer(incomingMessage.payload,"utf8");
fs.writeFile(filePath+genHexString()+".png",buffer,{encoding:"base64"},(err:NodeJS.ErrnoException|null)=>{
if (err)
console.log(err);
});
}
Ответы (1 шт):
Автор решения: Алмаз Рамазанов
→ Ссылка
Исправил на клиенте, спасибо @insolor. На стороне сервера сделал таким образом.
private onMessage(ev:globalThis.MessageEvent):any{
const incomingMessage:ClientEvent=JSON.parse(ev.data);
console.log(incomingMessage);
let imageBuffer:Buffer=new Buffer(incomingMessage.payload,"base64");
fs.writeFile(filePath+genHexString()+".png",imageBuffer,{encoding:null},(err:NodeJS.ErrnoException|null)=>{
if (err)
console.log(err);
});