Open danielrossyamitrano opened 6 years ago
Estaba viendo que python puede "guardar" (léase, serializar) usando pickle, lo que convierte a los datos en un formato binario. No se puede guardar un surface directamente, pero en mis pruebas tengo un par de funciones que pueden guardar imagenes como archivos pkl junto con otros datos (en principio, sus dimensiones, pero podría incluir muchos metadatos más). Una imagen de 32x32 de un solo color pesa, guardada en png,1Kb. En PKL con solo esa metadata pesa 6 veces más, pero se puede guardar todo en un solo archivo, y dice la documentación de python que se puede comprimir luego de serializar.
Como que no se puede guardar un surface directamente? esto que es entonces? https://github.com/danielrossyamitrano/_mis_pruebas/blob/dfab0d66e299a74bd7715b8aa75fda506680b095/extract/extract.py#L32
Tambien podes usar image.tostring y image.fromstring para serializar y deserializar https://www.pygame.org/docs/ref/image.html#pygame.image.tostring aunque tendrias que pasarlo por un compresor ahi
On Wed, Jun 2, 2021 at 4:54 AM Daniel @.***> wrote:
Estaba viendo que python puede "guardar" (léase, serializar) usando pickle, lo que convierte a los datos en un formato binario. No se puede guardar un surface directamente, pero en mis pruebas https://github.com/danielrossyamitrano/_mis_pruebas/tree/master/pkl tengo un par de funciones que pueden guardar imagenes como archivos pkl junto con otros datos (en principio, sus dimensiones, pero podría incluir muchos metadatos más). Una imagen de 32x32 de un solo color pesa, guardada en png,1Kb. En PKL con solo esa metadata pesa 6 veces más, pero se puede guardar todo en un solo archivo, y dice la documentación de python que se puede comprimir luego de serializar.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ludica-squamata/mano-gift/issues/132#issuecomment-852674350, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALWRIVOMJC47N3F27SP2M3TQWMOFANCNFSM4FFX2ARQ .
Como que no se puede guardar un surface directamente? esto que es entonces?
Me refiero a que no se puede serializar directamente a un archivo pkl. Lo intenté y el resultado fue "can't pickle (pygame.surface)". Ese link que me pasas guarda imagenes como imagenes. No me refiero a producir nuevas imagenes más un json que linkee todo, sino a guardar todo (imagenes + data + metadata) en único archivo.
Cual es la diferencia? el contenido de un archivo es solo un string. con tostring() podes simplemente agregarlo en tu savefile. con save() podes guardar en un archivo temporal y leer el contenido en tu savefile como imagedata
On Wed, Jun 2, 2021 at 4:32 PM Daniel @.***> wrote:
Como que no se puede guardar un surface directamente? esto que es entonces? Me refiero a que no se puede serializar directamente a un archivo pkl. Lo intenté y el resultado fue "can't picke (pygame.surface)". Ese link que me pasas guarda imagenes como imagenes. No me refiero a producir nuevas imagenes, sino a guardar todo (imagenes + data + metadata) en único archivo.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ludica-squamata/mano-gift/issues/132#issuecomment-853079331, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALWRIVJ24A3OWX3N2K2U6TTQY6HZANCNFSM4FFX2ARQ .
Algo asi tambien
f = io.BytesIO()
image.save_extended(surf, f, "a.png")
infoJson = {"height": 32, "width": 32, "image": str(f.getvalue())}
f = io.BytesIO(bytes(infoJson["image"]))
surf = image.load_extended(f, "a.png")
On Wed, Jun 2, 2021 at 4:38 PM Pablo Alviggi @.***> wrote:
Cual es la diferencia? el contenido de un archivo es solo un string. con tostring() podes simplemente agregarlo en tu savefile. con save() podes guardar en un archivo temporal y leer el contenido en tu savefile como imagedata
On Wed, Jun 2, 2021 at 4:32 PM Daniel @.***> wrote:
Como que no se puede guardar un surface directamente? esto que es entonces? Me refiero a que no se puede serializar directamente a un archivo pkl. Lo intenté y el resultado fue "can't picke (pygame.surface)". Ese link que me pasas guarda imagenes como imagenes. No me refiero a producir nuevas imagenes, sino a guardar todo (imagenes + data + metadata) en único archivo.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ludica-squamata/mano-gift/issues/132#issuecomment-853079331, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALWRIVJ24A3OWX3N2K2U6TTQY6HZANCNFSM4FFX2ARQ .
Se me hace que guardar un json con la data de la imagen haría al json muy grande y dificil de leer (algo así pasaba con los palotes del mapa "casas y árboles" antes de que existieran las estructuras 3D.
json es solo un concepto, no se que tipo de archivo tenias pensado para la serializacion. para el caso que sea un json no significa que alguien lo tenga que leer, es un formato de serializacion nomas
On Wed, Jun 2, 2021 at 4:59 PM Daniel @.***> wrote:
Se me hace que guardar un json con la data de la imagen haría al json muy grande y dificil de leer (algo así pasaba con los palotes del mapa "casas y árboles" antes de que existieran las estructuras 3D.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ludica-squamata/mano-gift/issues/132#issuecomment-853101260, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALWRIRNXXSDH7B73UM5OMDTQZBMRANCNFSM4FFX2ARQ .
Quisiera evitar JSON como formato porque es muy limitado para algunas cosas. Y sobre el formato, pickle no guarda con una extensión específica, pero se le suele dar la extención .pkl para distinguirlos.
Se me ocurre que el archivo de salvado debería incluir el sprite del héroe, especialmente si dicho sprite, en un futuro, permite ser creado (custom) o si el equipo del héroe modifica el sprite (#104).