Hi Alex, Thanks for your response. Actually I am loading image in InitializeImage() function. Also I am implementing Adobe AIR application where I am looking into the file system and not communicating to server.
I am wondering how to use Bitmap? regards, Uma On Mon, Aug 25, 2008 at 11:57 PM, Alex Harui <[EMAIL PROTECTED]> wrote: > When you create thumbnails in your app, you have to load the original > data in order to do so. The only way to reduce traffic is to generate > thumbnails on the server, which is more or less what Scene7 does > > > ------------------------------ > > *From:* [email protected] [mailto:[EMAIL PROTECTED] *On > Behalf Of *USA > *Sent:* Monday, August 25, 2008 2:49 AM > *To:* [email protected] > *Subject:* [flexcoders] Image Viewer > > > > Hi Guys, > > I am working on image viewer in Adobe AIR. The problem I am facing is that > I am using TileList for showing the preview of images of selected folder. > But when I select any folder it loads whole of the images in actual size > which is not good. I want to write code which creates thumbnail preview of > images and is performant. I tried using bitmap to do that but could not > display the image. Here is the code of TileListRenderer. > > <?xml version="1.0" encoding="utf-8"?> > <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" > styleName="plain" > verticalAlign="middle" > horizontalAlign="center" > horizontalScrollPolicy="off" > verticalScrollPolicy="off" > paddingBottom="10" > paddingLeft="10" > paddingRight="10" > paddingTop="10" > borderStyle="solid" > borderColor="#B5B5B5" > width="130" > height="130" > toolTip="{data.title}" > clipContent="true" > creationComplete="init()" > click="return;" xmlns:components="org.ectar.components.*"> > <mx:Script> > <![CDATA[ > import mx.controls.Alert; > import mx.events.ListEvent; > import mx.controls.List; > > private var _image:Bitmap; > private var _loader:Loader; > > private function initializeImage(): void > { > _loader = new Loader(); > _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, > imageLoadHandler) > > _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, > ioErrorHandler); > var source:String = data.source; > _loader.load(new URLRequest(source)); > } > private function imageLoadHandler(e:Event) : void > { > _image = createFilteredBmp(e.target.content.bitmapData, > this.width, this.height); > imageCanvas.addChild(_image); > invalidateDisplayList(); > // clean up > e.target.removeEventListener(Event.COMPLETE, > imageLoadHandler) > e.target.removeEventListener(IOErrorEvent.IO_ERROR, > ioErrorHandler); > _loader = null; > } > > private function ioErrorHandler(e:IOErrorEvent) : void { > trace(e.text); > } > > private function init(): void { > this.addEventListener(MouseEvent.ROLL_OVER, doRollOver); > this.addEventListener(MouseEvent.ROLL_OUT, doRollOut); > } > > private function doRollOver(event:MouseEvent):void > { > this.setStyle("backgroundColor","#9E9E9E"); > } > > private function doRollOut(event:MouseEvent):void { > this.setStyle("backgroundColor","#5E5E5E"); > } > /* This function was written by Andi Skater and was found at > > http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&catid=651&threadid=1288553&enterthread=y > */ > private function createFilteredBmp(b:BitmapData, newWidth:Number, > newHeight:Number): Bitmap > { > var scale:Array = > getScaleFactors(b.width,b.height,newWidth,newHeight); > > if(scale[0] == 1.0){ > //no scaling > return new Bitmap(b); > } > else > { > var bmpDataImg:BitmapData = b; > var matrix:Matrix = new Matrix(); > matrix.scale(scale[0], scale[0]); > var bmp:BitmapData = new BitmapData(scale[1], scale[2]); > bmp.draw(bmpDataImg, matrix); > bmpDataImg.dispose(); > return new Bitmap(bmp); > > } > } > /* This function was written by Andi Skater and was found at > > http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&catid=651&threadid=1288553&enterthread=y > */ > [ArrayElementType("Number")] > private function > getScaleFactors(width:Number,height:Number,newWidth:Number,newHeight:Number):Array{ > > var factorX:Number = newWidth/width > var factorY:Number = newHeight/height > var scaleFactor:Number; > > scaleFactor = (factorX < factorY)? factorX:factorY; > > /*if (_scaleMode == "fit") { > scaleFactor = (factorX < factorY)? factorX:factorY; > } else { > scaleFactor = (factorX > factorY)? factorX:factorY; > }*/ > var scaledWidth:Number = width * scaleFactor; > var scaledHeight:Number = height * scaleFactor; > > [ArrayElementType("Number")] > var factors:Array = > [scaleFactor,scaledWidth,scaledHeight,width,height] > return factors > } > ]]> > </mx:Script> > > <mx:Sprite id="imageCanvas" addedToStage="initializeImage()"> > > </mx:Sprite> > </mx:VBox> > > Please suggest where it is going wrong? > > Regards, > Uma > > >

