PDA

Ver la versión completa : Escalar gráficos y guardalos en un .fpg



masteries
04/12/2011, 15:46
Saludos "compañeros del metal":

He estado intentando escalar gráficos y guardarlos en un .fpg ya escalados, para luego después no tener que utilizar la sentencia "size". Mi intención es guardar los gráficos ya preescalados.

Hasta ahora he estado haciendo esto a mano con Paint Shop Pro 8, pero es una tarea muy tediosa, y con la gran cantidad de sprites que necesito no es una opción viable.

El código que he utilizado es el siguiente, pero de momento no me ha funcionando porque no guarda el gráfico escalado, parece que no obedece a "size", tampoco me funciona la sentencia "save_fpg", no me la reconoce (Fénix 0.92a):



program spriteador;

global
int id_fpg;
int id_graph;
int id_new_graph;
BYTE aux_g;
end

BEGIN
full_screen=false;
set_mode(320,240,16);//Ventana de 320x240 color de 16 bits
set_fps(30,0);//30 fps por segundo
id_fpg=load_fpg("sprite.fpg");
graph=1;
x=160;
y=120;
frame;
for(aux_g=1;aux_g<=26;aux_g++)//empieza en el 1 porque la posición 0 es la original con size=100
switch(aux_g)
case 1:
graph=1;
size=100;
end
case 2:
graph=1;
size=95;
...
...
...
case 26:
graph=1;
size=11;
end
end//fin del switch
fpg_add(id_fpg,aux_g,id_fpg,graph);
frame;
end//fin del for
//fpg_save(id_fpg,"sprite");
write(0,160,10,4,"Comprobando...");
for(aux_g=1;aux_g<=26;aux_g++)
graph=aux_g;//no chuta, obedece al último size,
frame;//por lo que supongo que hace 26 copias iguales en tamaño al
end//original
//save_fpg(id_fpg,"sprites");
delete_text(all_text);
unload_fpg(id_fpg);
exit();
END




Si conoceís alguna manera de hacer esto mismo con algún programa de gráficos en lugar de programando, pues también me valdría.

Gracias anticipadas por las respuestas.

Darumo
04/12/2011, 22:47
Segun la Wiki de Bennu es fpg_save también, es raro. http://wiki.bennugd.org/index.php?title=Fpg_save

Y no, tu manera de usar el size es incorrecto. Es mas laborioso, en teoria tienes que abrir el FPG de origen, y crear un segundo FPG, ahora tienes que pegar el sprite en pantalla (con un put_map creo) con el size y copiarlo desde pantalla al segundo FPG. En pocas palabras los sprites cuando tu le dices el "size" lo que hace es que al dibujarlos en pantalla les cambia el tamaño, pero en memoria siguen estando en su tamaño original por lo que por mucho size que le digas e intentes copiar de el lo que es el tamaño es igual, por eso tienes que "pegar" el sprite en algun sitio para que se quede dibujado en ese sitio con el tamaño dicho por el size y ahora de ahí copiarlo de vuelta a un FPG. Te lo digo de memoria de la epoca casi del div games studio, te vas a tener que empapar un poco en el manejo de put_map y get_map, y el manejo de FPG

masteries
04/12/2011, 23:31
Gracias Darumo, pero ya lo he resuelto utilizando el comando "convert" de ImageMagick.

Darumo
05/12/2011, 21:59
Me ha sorprendido ver 2 hilos con el mismo nombre en diferentes secciones. xD

Me alegro que haya dado con una solución.