Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Herramienta Para Generar Tiles

Iniciado por zupervaca, 17 de Junio de 2005, 09:37:38 PM

« anterior - próximo »

zupervaca

 ¿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

AgeR

 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.  ;)  

zupervaca

 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

ethernet

 con python, PIL unos crops y unos saves lo tienes en 10 minutos  

ethernet

 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

Mars Attacks

 En el script-fu de Gimp tienes una herramienta para tilear automáticamente.

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

TheAzazel

 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...

ethernet

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

zupervaca

 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

donald

 Había un programa q se llamaba tiler...

Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

zupervaca

 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();

_Grey

 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.

zupervaca

 asi es lo correcto, pero en j2me no puedo hacer recortes  <_<

saludos

_Grey







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.