good morning fellow flexers. 

I've been struggling for the last 3 days with a very frustrating problem.

In a photo manipulation project, I use a canvas where I handle images.
So, an image is displayed in a canvas and I want to add a new image on top of 
it, let's say a cool wood-looking frame. The first image is a jpg embedded but 
the second image, the frame, is a transparent 32bits png file loaded on demand.
The png file is transparent, as far as I can tell in photoshop. Yet, when I 
load it, all the transparent bits appear white.

This problem is making me crazy and I don't know how to handle it. Any help 
would be appreciated.

Bellow are parts of my code :

In the canvas handling the images : 


->loading the image 
public function setImageFrame (AnImageSource : String) : void
{

        var request:URLRequest = new URLRequest(AnImageSource);
        frameImage = new Image() ;
        frameImage.addEventListener(Event.COMPLETE, onFrameReceptionComplete) ;
                
        frameImage.load(AnImageSource);

}

-> Adding the loaded image to the canvas
private function onFrameReceptionComplete (event : Event) : void
{
        var bounds : Rectangle = new Rectangle(0,0,this.width,this.height);     
                
        

        var rawFrame : Bitmap = Bitmap(frameImage.content );
        var rawBitmapDataFrame : BitmapData = new BitmapData (rawFrame.width , 
rawFrame.height , true,0x00000000) ;
        rawBitmapDataFrame.draw(rawFrame) ;

//display true
        trace (rawBitmapDataFrame.transparent); 
        rawFrame = new Bitmap(rawBitmapDataFrame) ;


        frameImage.source = LCUtilTools.cropAndResizeImage(rawFrame , bounds);
                        
//display true
        trace (Bitmap(frameImage.source).bitmapData.transparent); 
                         
        frameImage.smoothBitmapContent = true;

        this.addChild(frameImage);
}


the cropAndResize function (used to resize the image to the correct ratio.

public static function cropAndResizeImage (AnImage : Bitmap , ABounds : 
Rectangle) : Bitmap
{

        var celluleRawBitmap : BitmapData = AnImage.bitmapData  
        
        var originalWidth:Number = celluleRawBitmap.width;
        var originalHeight:Number = celluleRawBitmap.height;
        var newWidth:Number = originalWidth;
        var newHeight:Number = originalHeight;
        
        
        var scale : Number ;
        var m:Matrix = new Matrix();
                                
        var scaleX:Number = 1;
        var scaleY:Number = 1;
        if (originalWidth > ABounds.width || originalHeight > ABounds.height)
        {
                scaleX =  ABounds.width / celluleRawBitmap.width;
                scaleY = ABounds.height / celluleRawBitmap.height;
                scale = Math.max(scaleX, scaleY);
                newWidth = originalWidth * scale;
                newHeight = originalHeight * scale;     
        }
                
        m.scale(scale,scale);
        
        var zoomArea : Rectangle ;
        zoomArea = celluleRawBitmap.rect ;
        zoomArea.inflate(ABounds.width , ABounds.height);
        var editedBitmapData : BitmapData = new BitmapData (ABounds.width , 
ABounds.height , true ,0x00FFFFFF);
        editedBitmapData.draw(AnImage.bitmapData,m);

        return ( new Bitmap(editedBitmapData));
}

Any help would be really appreciated, I really don't know what to do or where 
to begin in order to solve this issue.

Reply via email to