Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: zupervaca en 17 de Junio de 2005, 09:37:38 PM

Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 17 de Junio de 2005, 09:37:38 PM
 ¿sabeis de alguna herramienta que le indiques una imagen, ancho y alto para que te genere imagenes recortadas de la que le indicaste?

tengo el adobe photoshop pero como no ando con el nada no se si se puede o no hacer con el

saludos y gracias
Título: Herramienta Para Generar Tiles
Publicado por: AgeR en 17 de Junio de 2005, 09:40:45 PM
 En espera de una respuesta decente...

Hacer una herramienta de este tipo, si te limitas a lo que has dicho, es bastante simple, podrías hacerla en un rato tú mismo sin problemas.  ;)  
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 17 de Junio de 2005, 09:48:38 PM
 el problema de hacerla yo mismo es que tendria que guardar las imagenes en png con mascara y como no conozco el formato puede llevarme varios dias

saludos
Título: Herramienta Para Generar Tiles
Publicado por: ethernet en 17 de Junio de 2005, 09:51:34 PM
 con python, PIL unos crops y unos saves lo tienes en 10 minutos  
Título: Herramienta Para Generar Tiles
Publicado por: ethernet en 17 de Junio de 2005, 10:05:19 PM
 el script:



import Image


im = Image.open("imagen.jpg");
pixel_x = 128;
pixel_y = 128;
x,y = im.size;
xl = range(0,x,pixel_x);
yl = range(0,y,pixel_y);
for x in xl:
for y in yl:
 print x,y;
 im2 = im.crop((x,y,x+pixel_x,y+pixel_y));
 im2.save("imagen-%d-%d.jpg"% (x,y));




herramientas:  http://www.python.org
PIL: http://www.pythonware.com/products/pil/
python rocks :P

EDIT: encontré un bug, solucionado y testeado
Título: Herramienta Para Generar Tiles
Publicado por: Mars Attacks en 18 de Junio de 2005, 02:13:53 PM
 En el script-fu de Gimp tienes una herramienta para tilear automáticamente.
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 18 de Junio de 2005, 03:18:40 PM
 ¿y no existe una aplicacion sin hace falta de instalar python?, no ha todos nos gusta tener el python instalado y residente cuando le viene en gana

saludos
Título: Herramienta Para Generar Tiles
Publicado por: TheAzazel en 18 de Junio de 2005, 03:41:08 PM
 Ethernet te lo ha puesto a wevo....

pero si no quieres usar python.... veras q facil es, hazte en 5min un programita "tile-ador" en el lenguaje que prefieras y sobre el formato de imagen que controles o sea mas sencillo(un bmp por ejemplo). Despues, utiliza cualquier soft de dibujo para convertir tu PNG a tu formato, le pasas el tileador, y al resultado, otra vez con tu soft de dibujo, le cambias el formato, le pones mascaras, lo que quieras....

yo tengo un tileador para bmp y esa es la dinamica que utilizo...

:)

EDIT: mira, un soft comercial q lo mismo te vale por si estas vaguisimo total jejej
http://www.tilecreator.com/

EDIT 2: menos mal que mi curiosidad me empujo a probar ese software jeje, parece que no sirve para lo que te dije, sorry...
Título: Herramienta Para Generar Tiles
Publicado por: ethernet en 18 de Junio de 2005, 03:46:22 PM
Cita de: zupervaca¿y no existe una aplicacion sin hace falta de instalar python?, no ha todos nos gusta tener el python instalado y residente cuando le viene en gana

saludos
Python se ejecuta cuando lo lanzas tú, no se queda "residente" para nada. Símplemente te enseñaba un código que te puede resultar útil, lo tomas o lo dejas :)
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 18 de Junio de 2005, 03:58:10 PM
 ei no os confundais que os agradezco de veras el codigo que me habeis puesto para python, pero en principio de programarlo me gustaria hacerlo en .net con c# que estoy aprendiendo ahora

saludos
Título: Herramienta Para Generar Tiles
Publicado por: donald en 18 de Junio de 2005, 04:36:52 PM
 Había un programa q se llamaba tiler...

Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 18 de Junio de 2005, 05:23:23 PM
 he hecho el codigo en c#, lo pongo por si alguien lo necesitara, no obstante hare una herramienta, si veis algo que se pueda cambiar para hacerla mejor avisarme, que en c# estoy muy verde

using System.Drawing;

namespace dib
{
   class ImageToTile
   {
       // Imagen a trocear
       public System.Drawing.Bitmap imageSource = null;
       // Ancho y alto de el tamaño de troceo
       public int widthTile = 16, heightTile = 16;
       // Directorio destino
       public string destinationPath = "";
       // Formato final en que se guardara la imagen
       public System.Drawing.Imaging.ImageFormat imageFormat = null;

       // Realizar el recorte, retornar el numero de tiles generados
       public int MakeTiles()
       {
           // Preparar datos
           int nameToSave = 0;
           Bitmap bmpToSave = new Bitmap(widthTile, heightTile);
           Graphics bmpGraphics = Graphics.FromImage(bmpToSave);
           Rectangle rect = new Rectangle(0, 0, widthTile, heightTile);
           // Generar los tiles
           for (rect.Y = 0; rect.Y < imageSource.Height; rect.Y += heightTile)
           {
               for (rect.X = 0; rect.X < imageSource.Width; rect.X += widthTile)
               {
                   bmpGraphics.DrawImage(imageSource, 0, 0, rect, GraphicsUnit.Pixel);
                   bmpToSave.Save(destinationPath + "/" + nameToSave + "." + imageFormat.ToString(), imageFormat);
                   nameToSave++;
               }
           }
           // Liberar memoria
           bmpGraphics.Dispose();
           bmpToSave.Dispose();
           // Retornar el numero de tiles generados
           return nameToSave;
       }
   }
}


saludos

pd: se me olvidaba, un ejemplo para hacerla funcionar
           dib.ImageToTile imageToTile = new dib.ImageToTile();
           imageToTile.imageSource = new Bitmap("C:/Documents and Settings/David/Mis documentos/Visual Studio 2005/Projects/pruebas/pruebas.png");
           imageToTile.widthTile = imageToTile.heightTile = 16;
           imageToTile.destinationPath = "C:/pruebatiles";
           imageToTile.imageFormat = System.Drawing.Imaging.ImageFormat.Png;
           imageToTile.MakeTiles();
Título: Herramienta Para Generar Tiles
Publicado por: _Grey en 18 de Junio de 2005, 05:36:42 PM
 Estaba a punto de recomendarte la FreeImage, que es muy facil de usar, pero ya veo que en C# todo es mas mari.... digo... facil y eso....

De todas formas, pasando a lo que estas haciendo, quieres tener cada tile en un fichero grafico distinto?? por que lo usual seria tener varias tiles (todas las de un nivel o plano de scroll) en un mismo fichero, y desde ahi ir haciendo copys con las regiones correspondientes. Estos jovenes......

Saludos.
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 18 de Junio de 2005, 05:42:31 PM
 asi es lo correcto, pero en j2me no puedo hacer recortes  <_<

saludos
Título: Herramienta Para Generar Tiles
Publicado por: _Grey en 18 de Junio de 2005, 07:04:54 PM
 no lo sabia.... :ph34r:  
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 18 de Junio de 2005, 07:46:31 PM
 ya he hecho la herramienta de generar tiles en plan visual si la quereis descargar podeis hacerlo directamente desde aqui dibTiles o desde mi pagina web en el apartado de proyectos proyectos

saludos y que a muchos os sirva para algo  :lol:

pd: este mini proyecto me ha servido para ir haciendome poco a poco al c-sharp con windows form y la verdad es que esta mucha mas currado todo que en anteriores versiones
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 19 de Junio de 2005, 11:01:56 AM
 
Cita de: _Greyno lo sabia.... :ph34r:
perdona, realmente si se puede recortar, pero si el png tiene mascara la pierdes, yo no se como resolver este problema con lo que siempre he hecho archivos por separado, ademas al final los ejemplos de como hacer mapas con tiles para j2me usan archivos sueltos con lo que llegue a la conclusion de que con midp 1.0 lo mejor es hacerlo asi aunque pierdas bytes por los nombres de los archivos entre otras cosas

para recortar una imagen pongo un codigo en plan cutre, pero recordar que si el png tiene mascara esta se pierde, si alguien sabe resolver el problema ya sabe, a decirlo jjeje

ImageList imgList = new ImageList(1);
imgList.AddImage( 0, "/tiles/bosque.png" );
Image bloque1 = Image.createImage( 32, 32 );
Graphics gbloque1 = bloque1.getGraphics();
gbloque1.drawImage( imgList.GetImage(0), -32, 0, Graphics.TOP | Graphics.LEFT );


ImageList es una clase que tengo para la lectura de imagenes, el -32,0 hace que pinte fue del objeto graphics y asi queda recortado el cacho que quiero en este caso

saludos
Título: Herramienta Para Generar Tiles
Publicado por: sés en 19 de Junio de 2005, 09:37:53 PM
 No entiendo para qué quieres recortarlas desde el propio programa.
No sé, mételas en el JAR en la forma que las necesites, juntas o separadas... ¿no?
Título: Herramienta Para Generar Tiles
Publicado por: zupervaca en 19 de Junio de 2005, 11:20:38 PM
 es cuidar al grafista y no darle trabajo que se puede hacer con unas lineas de codigo  ;)