Reparar una captura de pantalla PNG dañada

Un PNG es el formato de imagen más autoverificable que existe: cada bloque de su interior lleva su propia suma de comprobación CRC-32. Esa estructura hace que parte del daño que impide abrir tu captura tenga un arreglo limpio y determinista, y que otra parte ya se haya llevado en silencio las filas inferiores para siempre. Esta herramienta lee los chunks y las sumas de comprobación en local y te dice cuál es cuál.

Tu archivo nunca sale de tu dispositivo — la reparación ocurre en tu navegador. 0 bytes subidos.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Suelta un archivo aquí o exploraToca para elegir un archivo

ZIP · Office · PDF · vídeo · JPG · PNG · RAR/7z · SQLite — reparados aquí mismo, en tu navegador. No se sube nada

0 bytes subidosGratis: 3 reparaciones/día — hasta 500 MB de vídeo, 100 MB de documentos y archivos, 50 MB de fotos. Descarga gratuita. Una reparación 5,90 €. Sin cuenta.

Repáralo ahora

  1. Suelta el archivo
  2. La reparación ocurre en local
  3. Descarga el resultado

Cuando una captura guardada como .png no abre, el visor suele ser estricto con algo que el formato le permite comprobar con exactitud. Fotos de Windows dice "It looks like we don't support this file format" (parece que no admitimos este formato) o "This file can't be opened" (no se puede abrir este archivo); Vista Previa de macOS dice que el archivo "puede estar dañado o usar un formato que Vista Previa no reconoce"; las herramientas basadas en libpng lanzan IDAT: CRC error, IHDR: CRC error o Not a PNG file. Suelta el archivo arriba y la herramienta lo recorre chunk a chunk en tu navegador —verificando cada CRC, comprobando la firma de 8 bytes y la geometría de IHDR, y decodificando el flujo DEFLATE hasta donde sobreviva— y luego reescribe un archivo válido alrededor de lo que realmente hay. No se sube nada; una captura muestra a menudo un saldo bancario, un mensaje privado o un portal médico, y nunca tiene que salir de tu equipo para revisarla.

Cómo está construida una captura PNG

Todo PNG empieza con la misma firma de 8 bytes —89 50 4E 47 0D 0A 1A 0A—, una huella deliberadamente cargada de trampas: el byte con el bit alto 0x89 detecta canales de solo 7 bits, el 0D 0A y el 0A suelto detectan la conversión de fin de línea, y el 1A (fin de archivo de DOS) frena a un type descuidado antes de que vuelque el resto. Después viene una serie de chunks, cada uno un paquete ordenado: una longitud de 4 bytes big-endian, un tipo ASCII de 4 bytes, los datos y un CRC-32 de 4 bytes calculado sobre el tipo y los datos (nunca la longitud) con el polinomio reflejado estándar 0xEDB88320.

Tres chunks llevan la imagen. IHDR va primero y siempre ocupa 13 bytes: anchura (u32), altura (u32) y luego bytes sueltos para la profundidad de bits, el tipo de color, el método de compresión, el método de filtro y el método de entrelazado. Una captura de un sistema operativo moderno es casi siempre de 8 bits, sin entrelazar, con tipo de color 2 (color verdadero) o 6 (color verdadero con alfa). IDAT contiene la imagen, a veces repartida en varios chunks IDAT consecutivos; dentro hay un flujo zlib (byte de cabecera 0x78) de líneas de barrido filtradas comprimidas con DEFLATE — cada fila precedida por un byte de filtro 0–4 (None, Sub, Up, Average, Paeth), escritas de arriba abajo. IEND es el marcador de final vacío, con un CRC fijo de AE 42 60 82.

Las capturas también llevan chunks auxiliares reconocibles —la primera letra en minúscula los marca como opcionales— como pHYs (densidad de píxeles, para que una captura Retina indique su escala), iCCP o sRGB (perfil de color), tEXt/eXIf (metadatos que estampa la herramienta de captura). Estos pueden dañarse o perderse sin perder un solo píxel, porque a un decodificador se le permite saltarse cualquier chunk auxiliar que no entienda.

El daño que tiene un arreglo limpio y determinista

Como cada chunk se autoverifica, toda una clase de daños del PNG tiene una respuesta conocible en lugar de una conjetura:

  • Suma incorrecta, datos correctos. La falsa alarma más común: los bytes de un chunk están intactos pero su CRC almacenado ya no coincide, así que los decodificadores estrictos (y pngcheck) rechazan el archivo con CRC error in chunk IDAT. Recalcular el CRC-32 a partir de los datos y reescribirlo vuelve a validar el archivo con cero pérdidas: la suma de comprobación era lo único que fallaba.
  • Dimensiones a cero o alteradas. Si la anchura o la altura de IHDR está a cero, ningún decodificador puede reservar un lienzo y el archivo no abre. Pero IHDR lleva su propio CRC, calculado cuando los números eran correctos. Eso permite a la reparación forzar la geometría por fuerza bruta: probar valores candidatos de anchura/altura, recalcular el CRC del chunk para cada uno y detenerse cuando coincide con el valor almacenado. Las dimensiones originales salen directamente de la aritmética — sin adivinar.
  • Corrupción por saltos de línea / modo texto. Una captura pasada por un cliente FTP en modo ASCII, un puente de chat o un script que la reescribió como texto cambia cada 0D 0A por un 0A suelto (o al revés), corrompiendo bytes por todo el archivo. La firma está diseñada para detectar justamente esto, y cuando la sustitución es consistente se puede revertir byte a byte.
  • IEND ausente o roto. Un archivo por lo demás completo pero que perdió su marcador de final dispara avisos de "archivo incompleto"; reescribir un IEND válido permite a un decodificador estricto aceptar la imagen que ya está entera.

El daño que te cuesta filas

Los límites honestos empiezan donde los propios datos de píxeles ya no están, y las capturas caen en ambos casos.

Truncamiento: la parte de arriba vuelve. Es la forma más común en que se rompe una captura: un guardado interrumpido por un disco lleno, una copia cortada al desconectar un móvil, una sincronización en la nube que se detuvo al 80 por ciento. La parte delantera del archivo está intacta y la cola —normalmente incluido IEND— simplemente falta. Como las líneas de barrido se escriben de arriba abajo, un PNG truncado se rescata en la parte superior de la imagen: píxeles reales hasta donde terminan los datos. La reparación reescribe un cierre válido para que un decodificador acepte el archivo y dibuje lo que sobrevivió. Las filas por debajo del corte no están dañadas, están ausentes, así que ninguna herramienta puede devolverlas: el resultado es un parcial honesto.

Daño en mitad de IDAT: la parte de abajo es ruido. Cuando la corrupción cae dentro del flujo DEFLATE en lugar de al final, la razón de que sea irrecuperable es el propio DEFLATE: es un único flujo continuo donde cada parte depende de lo anterior, sin marcadores periódicos con los que resincronizar. En cuanto el decodificador topa con el byte malo pierde el hilo (zlib informa de incorrect data check / invalid distance too far back), y todo lo que viene después se decodifica como ruido. Un solo byte alterado a media altura puede costarte todas las filas de debajo, no solo una línea: la imagen está limpia por encima del golpe y es basura por debajo. Por eso una captura abre con una parte superior nítida y una mitad inferior emborronada o gris, la misma forma de resultado que da un JPEG truncado.

Compáralo con los formatos que mantienen un índice separado de sus datos —el moov de un vídeo QuickTime, un b-tree de SQLite—, donde reconstruir el mapa rescata el archivo entero. El PNG guarda sus píxeles en un único flujo DEFLATE indivisible, así que una herida a media altura es permanente por debajo del corte.

Qué puede y qué no puede reparar

Puede reparar

  • Un chunk cuyo CRC-32 almacenado ya no coincide con datos por lo demás intactos: se recalcula el CRC y el archivo valida con cero pérdidas
  • Anchura/altura de IHDR a cero o alteradas, recuperadas forzando candidatos por fuerza bruta contra el propio CRC almacenado del chunk
  • Corrupción por saltos de línea / modo texto (CR-LF ↔ LF) de una transferencia en modo ASCII o un script que reescribió el archivo como texto
  • Un marcador de final IEND ausente o malformado en un archivo cuyos datos de imagen están por lo demás completos
  • Una captura truncada: las filas superiores que sí se escribieron se decodifican de vuelta como píxeles reales

No puede reparar

  • Las filas de imagen por debajo de un golpe a mitad de IDAT: DEFLATE no puede resincronizar, así que todo lo posterior al byte dañado es ruido
  • Las filas por debajo del corte en un archivo truncado: esos píxeles nunca se escribieron y ninguna herramienta puede inventarlos
  • Un archivo que se lee como 0 bytes o todo ceros: no hay imagen que reconstruir (eso es recuperación de datos, no reparación)
  • Una captura que otra app volvió a codificar o recomprimir tras el daño: los píxeles erróneos ya están grabados
  • La restauración píxel a píxel de una mitad inferior emborronada: la reparación devuelve un parcial honesto, no las filas grises

Si una reparación falla, te decimos por qué (datos que faltan frente a estructura dañada), y nunca se te cobra por una reparación fallida.

Preguntas frecuentes

¿Por qué no abre mi captura de pantalla PNG?

Normalmente por una de tres cosas: la firma de 8 bytes del principio se alteró, así que los visores no reconocen el archivo como PNG; la cabecera IHDR que guarda la anchura y la altura está a cero o alterada, así que un decodificador no puede montar el lienzo; o los datos comprimidos IDAT se truncaron o corrompieron a media altura. Las dos primeras suelen ser arreglos deterministas porque el PNG almacena un CRC-32 en cada chunk. La tercera es donde empiezan los límites honestos.

¿Qué significa un "IDAT: CRC error"?

Cada chunk termina con un CRC-32 de cuatro bytes calculado sobre su tipo y sus datos. Cuando un decodificador lo recalcula y el valor no coincide, informa de un error de CRC: los bytes de ese chunk cambiaron desde que se escribió el archivo. Si solo la suma almacenada es errónea y los datos están intactos, recalcularla arregla el archivo sin más. Si cambiaron los propios datos, el CRC está haciendo su trabajo al avisarte, y lo que se pueda recuperar depende de qué chunk resultó tocado.

¿Se puede recuperar una captura truncada?

Parcialmente, y solo la parte de arriba. El PNG escribe sus líneas de barrido de arriba abajo dentro de un único flujo DEFLATE, así que un archivo cortado se decodifica limpiamente hasta donde terminan los datos y luego se detiene. Recuperas la parte superior de la imagen como píxeles reales; se reescribe un IEND válido para que un visor lo acepte. Las filas por debajo del corte nunca estuvieron en el archivo, así que ninguna herramienta puede restaurarlas.

¿Por qué la parte de abajo de mi captura está gris o emborronada?

Porque DEFLATE, la compresión que usa el PNG, es un flujo continuo sin forma de resincronizar tras un daño. Si la corrupción cae en mitad de los datos IDAT en lugar de al final, el decodificador pierde el hilo en ese byte y todo lo posterior se decodifica como ruido, no solo una fila. Por eso el daño a media altura suele costar todas las filas de debajo del golpe, mientras que un truncamiento limpio al menos deja intacta la parte de arriba.

¿Se sube mi captura para repararla?

No. El archivo se lee desde tu disco y se reconstruye en la pestaña de tu navegador; el recorrido de chunks y las comprobaciones de CRC se ejecutan en local. Puedes abrir la pestaña Red y confirmar que salen 0 bytes, lo cual importa cuando una captura muestra un saldo bancario, un chat privado, una contraseña o un portal médico.

Relacionado: Reparar una foto JPEG · Chunks y CRC de PNG, explicados · Verifica que no se sube nada