Comunidad de diseño web y desarrollo en internet online

redimensionar un bitmapdata grande para crear thumb

Citar            
MensajeEscrito el 03 Abr 2010 02:25 pm
Hola como están???
necesito saber si se puede redimensionar con bitmapdata o similar, imagenes de 600x400 para crear thumbs en tiempo de ejecución de 250x100 con su consecuente perdida de peso ya q se trata de una galeria y a medida q agrego imagenes las animaciones q hago con los thumbs usan mucho procesador al utilizar las de 600x400 achicando el loader con width y height. No quiero recurrir a la típica de hacer 2 imágenes, un thumbs y una grande, sino con la grande fabricar la chica al cargarla, se puede??
Les agradecería cualquier sugerencia.

Gracias.

Por Pablokorku

60 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Abr 2010 03:52 pm
si se puede la clase BitmapData tiene un metodo clone() , que genera una copia exacta del bitmapData de un Bitmap , si quisieras hacer una copia de una parte en especifico de la imagen deberas de usar copyPixels(), pero igual con clone te sirve :

Código ActionScript :

var loadedBitmap:Bitmap;
var thumb:Bitmap;

var imageLoader:Loader = new Loader();
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);

function onImageLoaded(e:Event):void 
{
   var loaderInfo:LoaderInfo = e.target as LoaderInfo;
   loadedBitmap = loaderInfo.content as Bitmap;
   loadedBitmap.smoothing = true;
   addChild(loadedBitmap);
   
   //clonamos el Bitmap Original
   var thumbBmd:BitmapData = loadedBitmap.bitmapData.clone();
   
   thumb = new Bitmap(thumbBmd);
   thumb.smoothing = true;
   //prefiero scalar ya que asi se mantien mejor las proporciones , pero podrias usar width & height
   thumb.scaleX = thumb.scaleY = 1 / 3;
   thumb.x = loadedBitmap.width + 10;
   addChild(thumb);
   
   trace("original width :" , loadedBitmap.width , "height :", loadedBitmap.height ,"\n"
       ,"thumb width :", thumb.width , "height :", thumb.height);
}

imageLoader.load(new URLRequest("image.jpg"));


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 05 Abr 2010 12:27 am
Jonathan, gracias por tu explicación,es muy clara, pero mi consulta es además si la thumb resultante hecha de esta manera tiene un peso en memoria igual al de la grande pq ese es mi problema, o simplemente al clonarlo y escalarlo de la manera q me explicas se borra la info de los pixeles de más y es igual q cargar una thumb creada con photoshop o similar...

Gracias nuevamente!
Pablo.

Por Pablokorku

60 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Abr 2010 03:46 pm
No estaria muy seguro sobre el peso que tomara este thumb. eso te lo podria decir un profile en Flex , pero por logica deberia pesar menos , ya que si tomamos en cuenta lo que hacen los programas de diseño como Photoshop , al hacer mas chica una Imagen se reduce su peso, otra cosa que noto importante es que es mejor cargar una imagen pequeña de muestra para cada imagen grande, ya que si vas a cargar muchas imagenes hacer copias y reducir su tamaño trabajara mas la CPU, creo que no por algo todas las galerias las construyen a bases de thumbs y imagenes grandes, suerte con eso ;)

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 06 Abr 2010 03:59 pm
si, tenés razón, si tengo q programar para q haga las thumbs en tiempo de ejecución y no estamos seguros q reducirá el peso en memoria prefiero reporgramar un poco para cargar thumbs reducidas por photoshop q de hecho puedo jugar con la relacion calidad/peso. Igualmente te agradezco la data q me pasaste pq lo voy a probar como juego a ver q onda :D
Te mando un saludo y gracias!
Pablo.

Por Pablokorku

60 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.