User Tag List

Resultados 1 al 6 de 6

Tema: Esacalar gráficos y guardarlos en un .fpg

  1. #1

    Fecha de ingreso
    Oct 2007
    Ubicación
    Madrid
    Mensajes
    2,425
    Mencionado
    73 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    139
    Agradecer Thanks Received 
    266
    Thanked in
    Agradecido 166 veces en [ARG:2 UNDEFINED] posts

    Esacalar gráficos y guardarlos en un .fpg

    Editado: El título es "Escalar gráficos y guardarlos en un .fpg", lo que tienen las prisas...


    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):

    Código:
    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.
    Última edición por masteries; 04/12/2011 a las 17:38

  2. #2

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    9,212
    Mencionado
    63 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    124
    Agradecer Thanks Received 
    811
    Thanked in
    Agradecido 416 veces en [ARG:2 UNDEFINED] posts
    Me sospecho mucho que "size" en realidad hace una copia del gráfico y escala la copia (es decir, internamente se utiliza SDL_rotozoom) Así en el siguiente frame podrías cambiar el tamaño sin perder calidad, porque en realidad siempre escalas el original. Si esta suposición es verdad, la copia escalada no estará accesible desde Fenix/Bennu, así que no podrías guardarla con save_fpg(): siempre guardarías la imagen original sin escalar.

    Puedes utilizar programas de procesamiento por lotes ("batch processing" en inglés). En linux, por ejemplo, prueba:

    Código:
    comando_para_sacar_todos_los_pngs_del_fpg
    for img in *png; do
      imgns=`basename $img .png`
      convert -geometry 80% $img $imgns-80.png
      convert -geometry 60% $img $imgns-60.png
      convert -geometry 40% $img $imgns-40.png
      convert -geometry 20% $img $imgns-20.png
    done
    comando_para_meter_pngs_en_fpg
    Hay muchos programas para hacer esto gráficamente en cualquier sistema. En Linux, por ejemplo, Digikam es capaz de hacerlo. Pero creo que la línea de comandos es mucho más cómoda, sobre todo si vas cambiando los gráficos.
    Última edición por juanvvc; 04/12/2011 a las 19:49

  3. #3

    Fecha de ingreso
    May 2008
    Ubicación
    A tu lado, en tus sueños
    Mensajes
    22,478
    Mencionado
    145 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    319
    Agradecer Thanks Received 
    552
    Thanked in
    Agradecido 424 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    3
    Mirando el código rapidamente, creo que sólo tienes que hacer una copia del grafico en el case a un nuevo mapa, y al salvar guardar el nuevo mapa en cada caso.

  4. #4

    Fecha de ingreso
    Oct 2007
    Ubicación
    Madrid
    Mensajes
    2,425
    Mencionado
    73 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    139
    Agradecer Thanks Received 
    266
    Thanked in
    Agradecido 166 veces en [ARG:2 UNDEFINED] posts
    Voy a probar con ImageMagick que tiene un comando "convert" de estos.

    Después de cenar os cuento.

    Si, Juanvc, "size" hace eso que has explicado, y no merece la pena comerse más la cabeza teniendo un convert por ahí suelto.

    Gracias por las respuestas.

  5. #5

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    9,212
    Mencionado
    63 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    124
    Agradecer Thanks Received 
    811
    Thanked in
    Agradecido 416 veces en [ARG:2 UNDEFINED] posts
    Sí, eso decía, el convert de ImageMagick. En Linux está casi-casi por defecto aunque también se puede instalar en Windows.

  6. #6

    Fecha de ingreso
    Oct 2007
    Ubicación
    Madrid
    Mensajes
    2,425
    Mencionado
    73 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    139
    Agradecer Thanks Received 
    266
    Thanked in
    Agradecido 166 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por juanvvc Ver mensaje
    Sí, eso decía, el convert de ImageMagick. En Linux está casi-casi por defecto aunque también se puede instalar en Windows.
    Si, funciona perfecto bajo Windows. Sólo que hay que recordad que en la consola de Windows (y en el .bat que escribas) el carácter % se debe escribir duplicado %%, y durante unos minutos no había recordado esto.

    Que suerte tenéis, os vais a hinchar a gráficos con la próxima entrega de Thunder Blade.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •