es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guardando el archivo de imagen en un directorio

Estoy recibiendo una imagen en formato de bytes que me gustaría guardar utilizando específicamente el comando “open” debido a restricciones de la biblioteca. Por lo tanto, no puedo usar bibliotecas como opencv2 y PIL.

import numpy as np
import base64
import cv2
import io
from os.path import dirname, join
from com.chaquo.python import Python

def main(data):
    decoded_data = base64.b64decode(data)

    files_dir = str(Python.getPlatform().getApplication().getFilesDir())
    filename = join(dirname(files_dir), 'image.PNG')

    with open(filename, 'rb') as file:
        img = file.write(img)

    return img

Lo que simplemente quiero hacer es guardar el archivo de imagen en el directorio actual en el que me encuentro. Actualmente, cuando intento ejecutar mi código, me da el siguiente error:

com.chaquo.python.PyException: TypeError: write() argument must be str, not bytes

Lo cual requiere que tenga una cadena de texto. Me gustaría saber qué debo hacer para guardar la imagen como un archivo .PNG en el directorio.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para guardar la imagen como un archivo .PNG en el directorio actual, debes abrir el archivo en modo binario (‘wb’ en lugar de ‘rb’) y escribir los datos decodificados en él, que ya están en formato de bytes.

    Aquí está el código modificado:

    import base64
    
    def main(data):
        decoded_data = base64.b64decode(data)
    
        file_path = 'image.png'
    
        with open(file_path, 'wb') as file:
            file.write(decoded_data)
    
        return file_path
    

    Este código debería guardar la imagen como “image.png” en el directorio actual, y file_path debería ser devuelto como la ubicación del archivo.

Comments are closed.