Tratamiento de archivos PNG en BennuGD

Started by DCelso, May 31, 2009, 11:46:19 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

Buenas, pongo este reply, para confirmar que fpg edit no hace ningún tipo de conversión de color a transparente con imágenes de 16/24 bits, simplemente hace una copia perfercta a nivel de pixel en el fpg destino.
Asi pues, cuando lee el color RGB(0,0,0) de una imagen 16/24 bits, mete el byte = 0, que es el color que usa bennu como transparente cuando lee el fpg guardado.

NOTA: una cosa que me ha sorprendido mucho, viendo el SVN de bennu, es que bennu da soporte para maps y fpgs de 1 bpp. Asombroso, tengo que probarlo :D. Con dos colores posibles solo da para que uno sea transparente y el otro no :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Si, y con drawing color se define el color no transparente, eso lleva con nosotros desde Fenix, pero nunca se ha usado.
Yo estuve mirándolo para las especificaciones de los FNT y puedo decir sin miedo que FNTEdit sólo usa un 30% de las capacidades de ese formato, por eso quise hacer el mío (en realidad, es porque no teníamos ningun programa para crear fuentes de 1 o 16 bits ;D FNTEdit trabajaba sólo con fuentes de DIV).

PD: por lo mismo que tu comentas, siempre es mejor trabajar con PNGs con canal alpha, que entonces sí que lo respeta, y parece que convierte el color (0,0,0) en un negro no transparente.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

darío

Quote
PD: por lo mismo que tu comentas, siempre es mejor trabajar con PNGs con canal alpha, que entonces sí que lo respeta, y parece que convierte el color (0,0,0) en un negro no transparente.

Bueno, el tema es que los editores FPGs que han salido hasta la fecha no realizan esa conversión de color, pero en realidad es muy fácil de hacer. Yo se lo voy a implementar a mi editor FPG como opción a la hora de añadir gráficos a los FPGs de 16 bits.
Lo que me gustaría saber es: ¿cual es el "negro cercano" que se usa en 16bpp?  ¿es (1,1,1), (0,1,0) o cuál?
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

Drumpi

Para Fenix/Bennu es el 1 (recuerda que para ellos, los colores valen 0-255 en 8 bits, y 0-65565 en 16 bits, otra cosa es la conversión a RGB).
Aproximadamente un (0,0,3) con el paintbrush me lo ha cogido el FPGEdit como "no transparente", pero por ahi anda la cosa (azul muy oscuro, porque el azul es el más parecido de los tres al negro, pero vamos, cualquier color con componentes mínimas, si no tienes ambos colores uno al lado del otro, no los distingues).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Hola a todos,
aqui estoy de nuevo con un pequeño gran problema, cagoen ..,
he dado soporte a fpgedit para imágenes de un bits, como dije, vi que bennu lo soportaba en el código.
Pues nada, que fpgedit los crea y los abre bien, pero cuando los abro en bennu, éste se queda grogui total.
la única restricción que he leído que tienen los bitmaps de un bit por pixel es que el ancho por el alto debe ser múltiplo de 8. (Por eso de que lo mínimo que se puede escribir en un archivo es un byte).
Bueno el truco que hacen los formatos de imagen para insertar cualquier ancho por alto es añadir ceros al final hasta llegar al siguiente múltiplo de 8, es decir una imagen 3x4, osea 12 pixeles o 12 bits, se ponen los 12 bits correspondeintes y se añaden 4 ceros más obteneindo asi 16 bits, para poder insertar dos bytes en el archivo. Luego al leer simplemente se desprecian esos ceros ya que lees alto * ancho que es 12.
Esto es lo que he implementado en fpgedit2009 y no va en bennugd, me gustaría que me ayudaseis los doctos, especialmente, splinter que se conoce a fondo el core, y me explicara porqué se queda colgado bennu con este fpg de un bit que he hecho con fpgedit.

PD: ya se que este formato no sirve para mucho, oye pero didáctico es un rato :D. Así utilidad directa le veo programar handhelds de las antiguas esas LCDs que solo tenían un color de pixel y que detrás habia dibujada una imagen de fondo a capón :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

darío

Quote
Para Fenix/Bennu es el 1
No se por qué no lo había pensado... jaja que tonto soy. Gracias
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

Drumpi

Según me explicó Splinter en otro hilo:
http://forum.bennugd.org/index.php?topic=464.0
Los bytes sólo sirven para una única fila: si tienes 4 filas debes usar 4 bytes, aunque tengas sólo 3 columnas y puedas rellenar de una a otra.
Sin embargo, he obtenido unas letras muy curiosas, de una linea de ancho, que parecen un morse vertical o algo muy raro (y muy chulo como lenguaje extraterrestre ;D).
No he tenido tiempo de seguir experimentando, pero mucho me temo que en realidad se usa un byte por pixel, con valores 1 o 0.

por eso te comentaba en el otro hilo que quería ver cómo habías hecho los mapas de 1 bit.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

splinter_work

#52
creo que 0,0,1... a fin de cuentas da lo mismo, cualquiera que pongas...
esto es en 16 bits... en 32 no hay estas chupuzadas (o creo...:P).

EDIT: si, (0,0,1) = 1 (yo tambien soy un tonto)

splinter_work

No se como lo estas haciendo, pero si el ancho es de 12 pixels, esto serian 16 bits = 2 bytes. Supongo que hasta ahi esta todo igual.
Y el alto no deber ser dividido por 8, logicamente.

Luego le echare un vistazo a tu codigo y hare pruebas en bennu, pero ya del vamos los mapas de 1 bits funcionan en bennu, quizas algo en los fpg, mapas de 1 bits que se usen en bennu, tenes de ejemplo el font del sistema.