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.

Python guarda imagen binaria: archivo PNG corrupto por conversión a ASCII.

Estoy intentando usar python para guardar archivos de imágenes que obtengo a través de URLs solicitadas. Aquí está el código para obtener el contenido y guardarlos.

response = requests.request(method=’get’,
url=adsRequestUrl[idx], headers={‘Connection’: ‘close’})
content = response.content

Intenté dos formas de guardar la imagen.

im = Image.open(BytesIO(content))
im.save(‘./ads_response/’ + today + ‘/’ + str(ad_requests_db_id[idx]) + ‘picture’ + today + ‘.png’)

La otra forma que intenté es esta:

with open(‘./ads_response/’ + today + ‘/’ + str(ad_requests_db_id[idx]) + ‘picture’ + today + ‘.png’, ‘wb’, 100000000) as file:
file.write(content)

Cuando imprimo el contenido de la respuesta en el código, se muestra así:

b’GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x01D\x00;’

Pero después de que se guardó en mi dispositivo (probé tanto en CentOS como en Windows), tiene un error al abrirlo y leerlo. Cuando abro el archivo en un editor de texto, se muestra así, lo cual no es como el contenido que imprimí.

‰PNG
V¶¨P†z0áÛíëhú<€A

Cuando intento abrirlo como una imagen, dice que no se admite este formato de archivo o que hay un error fatal al leer el archivo de imagen PNG: el archivo PNG está corrupto debido a la conversión ASCII. ¿Podría alguien ayudarme a encontrar el problema y solucionarlo? Realmente no lo entiendo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando guardar un archivo de imagen usando Python, pero el archivo no se está guardando correctamente.

    Cuando imprimes el contenido de la respuesta, muestra como b'GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x01D\x00;', sin embargo, cuando abres el archivo en un editor de texto, muestra como ‰PNG V¬¨P†z0á»í«hú<€A.

    Parece que el archivo se está corrompiendo cuando se está guardando. Para solucionar este problema, es posible que necesites verificar la codificación del archivo cuando se está guardando. Puedes probar usando el parámetro encoding cuando estás escribiendo el archivo, como se muestra a continuación:


    with open('./ads_response/' + today + '/' + str(ad_requests_db_id[idx]) + 'picture' + today + '.png', 'wb', 100000000, encoding='utf-8') as file:
    file.write(content)

Comments are closed.