Actionscript 3 - Loading Giant Images Into Flash - Exceeding The BitmapData Limitations?
Nov 29, 2011
I am trying to let the user import giant images into a flash application. Unfortunately the BitmapData object's dimensions cannot exceed "8,191 pixels in width or height, and the total number of pixels cannot exceed 16,777,215 pixels" (see Reference)
Obviously with FlashPlayer11 these limitations vanish - BUT: As I only get bytes from the FileReference, I need to convert these via Loader.loadBytes(), to get access to the image data. This doesn't seem to work for images exceeding the old BitmapData limitations.
I have a quite large AS3 project, that involves loading external images and videos. The videos are requested one at a time. But for the sake of the UI experience I decided to load all images at once, added them to a container in different movieclips and then fade them in and out.
It all works fine, while I have 10 to 15 images, over that it starts to deteriorate the performance. Actually I'm not even sure that the problem is the performance, but the thing is that flash starts doing weird clunky behaviors, specially related to mouse interaction.This is a link where it works fine, with about 8 images in the xml.
[URL]
Probably the solution would be loading one by one, but if it's performance, what's going to happen when the timer slider cycles through 30 and they are all loaded anyways?
I'm attempting to "cache images in" upon loading my SWF, and I am not sure what the standard is for this. Basically I have (let's say) 5 buttons and 5 accompanying images. When the SWF is loading on a server, I want all 5 of my images to be loaded into memory, but not copied. Then when I click on one of the buttons it would bring up the corresponding image for that button id. Couple of things to point out: I don't don't if I need multiple clip loaders or one multiple BitmapData instances or one I *do* know that I need multiple movieclips, FWIW. Here's my start:
I am planning to build a giant management system in Flex 4.0, and I just wanted to know what are some pros and cons of using 4.0 (or 4.2) over 3.5? Lighter components? Faster pipelines? What are some things I can look forward to when using Flex 4.0?
how to scale down flash images using BitmapData and Matrix?? I'm using it for fullscreen so that the images are always perfect. I've been tampering with this, but cannot get it to work properly.
Should each button get a class and a listener, or should I dump everything into one Object and use e.target.name to figure out what is getting clicked? That way I can just use one listener, but then I won't be able to recycle anything. I could probably work around that though.
On this page are listed Source, Library, and External Library lists. I am working on a large flash project with hundreds of files. It appears that CS4 caches a copy of my fla's similarily named folders here, EVERY time I publish my files. These lists are now hundreds and hundreds of items long. I want to clear these lists, but the only option I can find is the minus sign.
Is there a way to wipe these lists clean, or, does anyone know an external xml file or such (i have serached), where this data is stored so I can manually remove it.
I placed a large photo (movie clip object) as a background onto the stage, but it exceeds the stage size by 25%. It's done on purpose. While I see it in the Flash authoring environment, the image excess refuses to appear in Internet Exlorer once published.I also have an animated object over (foreground) that does appear past the stage in the browser.
I want to have an AS3 app load images from url supplied by the user. But I don't want a malicious user to be able to load an SWF file in place of the image, such as with an altered extension "maliciousSwf.png". Well, not sure how big a security threat that is above and beyond the ability of the hacker to decompile swf, but I think that ideally such behavior should not be allowed.
So, is there any way to prevent this? When people allow users to load images in their Flash apps, do they somehow guard against loading of SWF? Or is this really absolutely no big deal?
How would you defer loading of other graphics on the page until after the images in a Flash gallery's images.xml file are finished loading?Is there any way to detect for this, or would I only be able to check if the flash swf object is finished loading? I'm pretty sure the swf object would be loaded/ready as with document.getElementById('flashobject').onload = function(){}; before the corresponding images have loaded though, instead of after.
I am loading images of different size and then images are scaled and border is drawn for each image as shown in below link,[URL]... I want that border of images to be of the same width and height and for that I need to find out the max width and height size image before loading all the images. Is there any way that I can know the width and height of an image before loading it completely?
When I publish the file, I'm getting the following error message in the Output panel:
**Error** Scene=Scene 1, layer=Layer 2, frame=1:Line 7: The class or interface 'BitmapData.loadBitmap' could not be loaded. var plaid:BitmapData.loadBitmap("plaid");
I am trying to use the reflect class from "http://pixelfumes.blogspot.com/2007/03/reflection-class-v3-with-source .html" but I keep getting this error:
ArgumentError: Error #2015: Invalid BitmapData. at flash.display::BitmapData() at Reflect() at Site_fla::GalleryPage_29/loadThumbs() at Site_fla::GalleryPage_29/sortXML()
[Code]...
btw, first I used assigned thumbContainer as the mc argument (outside the loadThumbs() function) and it worked but not exactly what I wanted... because I thought it is supposed to update when the movieclip is animated but it actually didn't... when I use a scroller, only the thumbs that are first loaded to the stage get the reflection..
I have written a complictaed bit of code that has exceeded the default timeout period.Can I change this default?Is there a good way of identifying which part of the code is taking all of the time, so that I can focus my improvement efforts?
I've looked at a few demos from adobe that show apps built with Flex 4.5 running on iOS from simple list views to video capture. This has made me wonder if its an effective solution to build cross platform mobile apps.
For those of you who have taken Flex 4.5 mobile for a spin, what is your impression on the capability and performance on iOS. Is there anything you can't do with Flex 4.5 mobile that you couldn't with a native app? Are there any limitations?
I'm scaling down images loaded from as3 and I want them to stay sharp. They are scaled because I have a liquid layout which resizes a "body" movieclip that contains the images (loaded from xml).
I used code from here to scale bitmap, but I don't really understand it. [URL]
My biggest problem is that since the images are loaded as displayObjects rather than bitmaps, I need to know how to change the bitmapData of each displayObject.
Second problem is that I need the code the change the data, but not scale it down also(it is already scaled down). How do I do that?
Here is my attempt...
Code: //code is executed when image is first loaded (I don't care if it is resized afterwards) //thumb is the displayObject that is my image
A few days ago, I began to develop a flash with text editor and Flex SDK which is free. But I found Flex SDK doesn't support Alert or Scrollbar.What are the differences between Flex SDK and Flash Professional or Builder?Are there any other limitations of developing flash in command line with Flex SDK?
I am creating an interactive post-it for an upcoming event that allows for us to tap into a sql database and post tweets, survey answers and images. We've already tapped into the Twitter API and the survey, so those are A-OK.The problem lies within loading the images from a location other than the local interactive board's server.If the image itself is locally hosted, it loads just fine.If the image is hosted elsewhere, the image will not load, even though I have a trace on the URL of said image.I'm loading all tweets, surveys and images through an XML load and all the data is loading properly.I AM loading the image through a smoothing filter so that when the "post-its" are slightly rotated, they are not jagged. Here is THAT code:[code]
This is a two part script where the bulk loads in the image and places it into an empty movieclip, then adds the smoothing filter. The second part is a resizer that automatically resizes the image and keeps the aspect ratio.When I test the flash piece (not embedded in HTML) the thing works 100%.As soon as I put the swf into an html and view it on a web page, the remote images will not load.I'm a bit stumped on why this is, could this be a firewall or security issue? Because I work in a high security firewall environment.
As my as3 skills are not good, I stumbled against this problem, my approach in overall will probably not be the easiest, but here it goes:
In the library of my fla file I have imported 4 pictures, in the properties (class) I gave them the name photo0, photo1, photo2, photo3. With my code on the time line I create dynamically 4 movieclips and now I want to attach photo0 to movieclip 1 and photo 2 to movieclip 2 and sofort...
Is there a way to give the bitmapdata name also a dynamic name, something like[code]...
I'm trying to dynamically resize a set of images that are being loaded through the MovieClipLoader class. The code below seems to work, except that the images do not appear to be 'smoothed' at all...
I have an image loaded from BitmapData displayed in an Image control. This Image control has dragEnabled and user can drag and drop small images (from a bunch of images in a TileList) on top of it.
The image loaded from the Bitmapdata can be different every time with different resolution and the Image control scales it down to fit its fixed with/height. But while saving the image after editing I am saving it with its original width/height. For this purpose I am storing the original Bitmapdata in a temp object and applying any edits there before saving.
how to create an image combining the Large image and the small images dropped into it. May be I can use display object snapshot but then I want to save the image with its original with/height and preferably after converting it to Bitmapdata.
When you load an image into a MovieClip then use that as the data source to draw() into a BitmapData object, the documentation says "Optionally, you can specify whether the bitmap should be smoothed when scaled. This works only if the source object is a BitmapData object." To me that implies that a second BitmapData object is needed in order for the optional [smooth:Boolean] parameter to work when set to true.
We found we didn't need to "double buffer" in this way when using MovieClip.attachBitmap() with the [smoothing:Boolean] parameter set to true. We did run into another problem though. This problem only manifests itself when you run the SWF as part of an HTML file running from a local web server like http://127.0.0.1. Here's the problem: images are loaded dynamically (URL's pulled from assets.xml) and the ones that are loaded locally from a directory on the same machine load and are smooth and distortion free. Other URL's point to a remote host. The images loaded via a remote source (example) do not "smooth nicely" running the exact same code as the local images. The remote images are shimmery and exhibit update artifacts. If you run the exact same page not via an http:// web sever i.e. - just loading the html page into the IE, then the remote images do get nice smoothing when animated.
Is there some magic to get BitmapData loaded from a remote source to smooth correctly when run from a local web sever? For our internal demo we removed any remote URLs so we could demonstrate that Flash does provide the ability for nice smooth animations but it would be a good problem to solve.
It stands to reason that an OS would have a memory limit for the FMS process. I have a video chat app to which I may need to connect 300,000 or more concurrent users. Has anyone done this? Would this break the bank? What's the most you've ever had connected at once?
The video portion of my app goes through a good CDN, so I don't think there's a problem there. But my chat room is all on one FMS instance. I see something in FMS docs in "configuring performance features" that warns, "Adobe recommends that you ensure that your total system memory usage does not exceed the process limit of your OS". Granted it's in the context of configuring media cache, but wouldn't the same apply to chat room size if the numbers get high enough?
I want to load .jpg images into flash and store them as BitmapData objects. I've coded the loading of images many many times but I've never tried to store them as BitmapData, I just usually add the Loader to the display list and manipulate the image through its loader.
I feel like this is a very poor approach and so I want to try just saving BitmapData, because on the Model side of things thats really all I need.
Now the only way I have found to extract BitmapData from a loaded JPEG is to load the JPEG and upon completion write:
myBitmapData = Bitmap(loader.content).bitmapData;
First, is there a way to extract the BitmapData without encumbering the code with the Bitmap class? In other words, is there a way to extract that information without involving the Bitmap class - BitmapData while useful for a Bitmap is not dependent on Bitmap so ideally I would never involve Bitmap here.
Also, why is this Bitmap type-casting so widely accepted? loader.content is a DisplayObject and therefore is not necessarily compatible with Bitmap. Further, for all Flash knows we just loaded an SWF and as far as I know you can't typecast that to a Bitmap.
I've been working on this for a while, and thought I understood the BitmapData class at least well enough to do basic stuff with it, but I'm doing something wrong.
I'm trying to make a preload function that will load external JPEGs, store them in an Array as BitmapData objects, then distribute them to thumbnail objects after all the images are loaded. The thumbnails are based on an external class I wrote, which already has a function to accept variable data.
My problem is, I can't seem to find a way to store BitmapData objects in an Array. I've even tried using a Vector.<BitmapData> object, but I get the same result, which is no data stored.
Here's the function, isolated from the rest of the script.
[Code]....
The result of this function is supposed to be, a series of images loaded one after the other, stacked 5 pixels down from each other. However, the actual result is, only the last loaded image is displayed. That's true for any number I place in the 'for' loop, only the last loaded image gets displayed.
Obviously I'm doing something wrong with the loading of the 'bitBucket' BitmapData, because it seems to be writing over the previous BitmapData in the Vector series.
I have an old .fla file that has been working fine for a year. None of the javascript, xml, or actionscript has changed, and all of a sudden the Flash is not loading the images in IE6. It works fine in ALL other browsers, even IE7 and IE8.
Explaination: MX 04' Pro Thumbnail Nav. loading images with XML Loader resizes and displays images when users click on Nav. reading XML Problem: Users click Thumbnail Nav. first image gets loaded and loader resizes to image. However the next choice by user on thumbnail click, the second image doesnt get resized in the loader. It goes beyond holder. Here is my code for Thumbnail and Loader:
[Code]....
Now the first image loads fine and the loader sizes to file from XML. However, when users click second choice from Thumbail the loader doesnt resize to new image size. It only gets resized on the first selction or if users click the next or prev. buttons then the images fade correctly but nothing fades back in. Now if they do hit next or prev and then hit a thumbnail option it loads and resizes.
im loading multiple images but how do I make sure the program will start once all images have dispatched a complete event. like make a universal loader for all the other "small loaders" if you understand.