Estoy tratando de decodificar y guardar un archivo de imagen pasado a un script de python.
El archivo de imagen es leído por un script Node.JS index.js y sus datos pasan como image dentro de una cadena JSON {"image":readImageFile(), "name":"image.png"} .
La cadena JSON es recibida por un script de Python generado script.py .
El problema es que cuando trato de decodificar los datos de la imagen, aparece el error TypeError: memoryview: a bytes-like object is required, not 'str' .
Intenté convertir los datos de la imagen a bytes como base64.decodebytes(bytes(params['image'],'utf-8')) pero obtuve el error UnicodeEncodeError: 'utf-8' codec can't encode character '\udc8f' in position 66: surrogates not allowed .
¿Cómo decodifico correctamente los datos binarios de la imagen para poder guardarlos como un archivo?
¿Podría ayudarme a detectar el problema?
¡Gracias por adelantado!
guión.py:
import sys, json import base64 json_str = input() # Capture input params = json.loads(json_str) # parse input fileName = params['name'] # Capture file name fileData = base64.decodebytes(params['image']) # decode image ... ... print("Image Saved!") sys.stdout.flush()índice.js:
const spawn = require("child_process").spawn; const fs = require('fs'); let params = { "image":readImageFile(), "name":"image.png" } const pyProcess = spawn('py',['script.py']); pyProcess.stdin.write(JSON.stringify(params) + '\n'); pyProcess.stdout.on("data", (data) =>{ console.log(data.toString()); }); function readImageFile() { try { return fs.readFileSync('color.png', 'binary'); } catch (err) { return err; } }