ActionScript 3.0 :: BitmapData Mapping To Scaled Movieclip Then GetPixel?
Aug 18, 2009
I'm building an application where the user can upload a photo of their head, scale it and position it, and then pick a colour from the photo.The photo gets put into a movieclip called 'head'I'm stuck at the colour picker part and I just can't seem to work out the whole bitmapData thing. Here's my colour picker code -
ActionScript Code:
private function beginColourPick():void
{
_bmd = new BitmapData(head.width, head.height);
[code]...
This code kind of works, but not correctly.
Problem #1: The colour picker only works in the bottom right quarter of the image because I moved the head mc so the registration point is bang in the middle. So the problem here is that I can't figure out how to move the bitmapData in line with the head mc.
Problem #2: If the user scales the head mc (even a tiny bit) the colour picker stops working altogether. Now I'm thinking I've got to use a transform matrix - but I read up on it and haven't got anywhere.
I'm working with a video in Flash where I am capturing each frame and testing the color of a single pixel. I'm using it to determine when a white/transparent background changes to be a color. The following AS2 code works flawlessly when I preview it in Flash and on my desktop in the browser (the direct SWF and placed inside HTML using SWFObject) but as soon as I upload it to my server it fails and produces "FFFFFF" continuously regardless.
this.onEnterFrame = function()[code]..........
There is no difference in the files; they are both pulling from the same video source (hosted on an Flash FLV server).The only difference is one set of files is hosted on my local computer and the other is hosted on my web server.
I have two images, one overlayed exactly over the other. The image in front is what the user needs to see, but the user behind can be considered to be like a map with different fields of color on it representing different things.
What I am trying to do is that when the user mouses over the image, it reads (via .getPixel) the color info of the image behind which prompts certain messages to be displayed.
I am not having a problem with getting .getPixel() to work since when I just have the behind image (colored "map") showing, the color data for each pixel comes up as expected. But, when I overlay the top image, it shields the back image from being able to be "read" by my .getPixel function.
Is there a way to have a movieClip not "interfere" with movieClips that lay behind it in the stack?
hi guys, i got this image i scaled down by .5. The user is then allowed to add objects to the image such as flowers that are sprites in the library. So basically, a jpeg that is 800 x 800 is down to 400 x 400 on the stage and the user is able to add objects to overlay the image.
i want to save the image with the flowers and objects back to its 800 x 800, how do i redraw this image using bitmapdata properly?
i have a movieclip(content_mc) that contains 4 movieclips(img1, img2, img3, img4) of different widths within it. The content_mc has been scaled to the browser using _xscale and _yscale. so if i want to center img1 on the screen the math WITHOUT content_mc being scaled would look like this
but being the fact that it's scaled...it returns the original _width values of the nested movieclips. How do i get the values of the new, scaled widths?
I have a frame_mc that get scaled 400 % onPress with a fusekit tween. Now I'll like to anchor a title_mc to the the top edge of the frame_mc without scaling it. How to do that? onEnterframe in the onPress function?
I've written a simple MovieClip replacement that converts an existing imported MovieClip to a sequence of BitmapData. This removes the requirement for Flash to render vector data in the MovieClip on each frame.
But BitmapData has a huge memory footprint. I've tried converting the BitmapData to a ByteArray and using the compress() method. This results in a significantly smaller memory footprint. But it has proven impractical. For each redraw, I tried uncompressing()'ing the ByteArray, then using SetPixels to blit the data to the screen, then re-compressing() the frame. This works but is terribly slow.
So I was wondering if anybody else has an approach I could try. In Flash, is it possible to compress bitmap data in memory and quickly blit it to the screen?
I wonder how native animated GIFs work in Flash. Does it uncompress them to BitmapData behind the scenes, or is frame decompression done on the fly?
I have a greyscale image and I want to scan the pixels out of the Image and this is what I get : var i:int; var j:int; for (i = 0; i < img.contentWidth ; i++) { for(j = 0; j < img.contentHeight; j++){ pixeldaten.addItem({x:i,y:j,pixel:bmd.getPixel(i,j)}); }} But the table doesn't look like RGB Values . (R , B , and G must be the same).
So, I'm using the BitmapData class and getPixel to retrieve the colour of a pixel. It works fine and returns a number like "16706965". I'm not sure what kind of value this is? If I place a 'toString(16)' on the end of it, I get a HEX value, but sometimes it isnt 6 digits long, sometimes 5 sometimes 4, so I can't just convert it from HEX to RGB.
I can make this number into a string with 6 digits, but then it doesnt recognise when I try to convert it to RGB
I am having a few issues converting a MC to a bitmap. I have succeeded in loading a graphic from the library, loading that as a bitmap and I can use getPixel to get the color at a certain x,y point.BUT I have another part to the problem. I have a file upload where a user can upload an image and choose a color off that logo. So I have the logo uploading, then getting loaded into an MC on the stage and it all works honky dory.However, when I (thought) I was converting it to bitmap and then use getPixel, every part of it is just returning white.[code]But no matter what co-ordinates I put in, I always get white.
(1) read in a *.png image(2) when the user mouses over the movieclip that contains the image, an RGB value (in 0xFFFFFF format) of the pixel which the mouse is currently hovering over is displayed.Here is what I am doing to try and make it happen:(1) Using the loader class (imageLoader) to load a bitmap (*.png -- no alpha) into a movieclip.(2) Also taking the "imageLoader.conent" and placing it into a "grainImage:Bitmap" object.(3) Using a timer event to fire off data describing the where the mouse is at all times.function readPixelColor(te:TimerEvent):void { trace(grainImage.bitmapData.getPixel(mouseX, mouseY).toString(16));};How can one insert code in these Forums? I used to be able to do that... Oh well, the problem that is happening is that the value that is being returned by this function is off by 010101 (I believe, not certain how hexidecimal works).
Anyway, if the color is really "336699" (as confirmed in Photoshop) my function returns "326598". Which is "336699" minus "010101"why this may be doing this? Are my values "shifted" in some way since there is no alpha? Maybe there is some sillyness behind loading the image into a _mc and also placing the loader content into a bitmap object -- they are interfering with each other in some way?
I'm trying to create a color picker using getPixel. It works wonderfully as long as the image is loaded from a local drive. When I try loading it from the server (a subdirectory on the same server as the SWF), the loaded image doesn't get drawn when I use the draw command. It draws a white rectangle and when I use getPixel, I always get 0xFFFFFF. I also have system.Security.allowDomain("[URL]") in my script, but nothing works.
I am trying to loop through a bitmap and determine if each pixel is lighter or darker than gray using getPixel(). Problem is, I am not sure how to tell whether the value returned by getPixel() is darker or lighter than gray.
Neutral gray is about 0x808080 or R:127, G:127, B:127. How would I need to modify the code below to accurately determine this?
I'm writing an applicaton which acts based on different colour values of pixels in a png image created in Microsoft paint. However, when I load the image into a BitmapData object, and then parse through the pixels reading their values using getPixel() or getPixel32() (I've tried both) I seem to be getting values which are slightly inaccurate compared to what was saved. For example a pure white pixel which should be read as 0xFFFFFFFF often comes out as 0xFFFFFFFE. The behaviour of the program is dependent on the exact value of the pixel so these errors usually break it.
Sometimes the problem is intermittent so seems fixed but actually isn't. Is it to do with the PNG format? I thouht png was lossless so should deliver accurate pixel values at all times?
I've created a simple drag-and-drop dress-up game. The aim is that users will create a monster by dragging and dropping, and that an image of that monster will be sent to me, and I will create a toy that looks like the monster.
So once users are happy with the final look, and have filled in their details on the page, I would like them to be able to click a button that will send me the encoded jpeg of how the swf currently looks. I could then recreate the image using image magick or something similar, I guess?
I realise that this may require PHP, but as I have never used it before I thought that perhaps it may be possible to use getpixel to get an encoded text string of the stage and then send that to myself via "mailto"?
I'm having this annoying proble with BitmapData. I try to turn a movieclip into a bitmap, but there is always white space to the right and bottom. At the top and left, it is obvious that part of the movieclip was cut off. However, the width and height of the bitmap are correct. In other words, white space takes up where the rest of my movieclip should go. About 30% of the bitmap is white.I have a method that creates a grid based on an array. The Wall class extends MovieClip. Each wall is a 70 x 70 movie clip that looks like a stone (its x and y are established within the class itself).[code]I have messed around with changing the registration using a class I found online, but it didn't fix anything. In fact, changing the registration made no difference. Also, I have called addChild(walls), and everything is displayed correctly. But for performance reasons, I need to make it a bitmap.
I have a MovieClip in the library exported for actionscript. How do i convert or attachMovie it to a BitmapData class so that i can manipulate its pixel data? I will need that so that i can distort the MovieClip.
I am trying to snapshot a movieclip at X and Y by WIDTH and HEIGHT. All is fine, it snapshots fine and gets the width and height, but I can't adjust the x and y position for it to begin the snapshot at. I tried using a Matrix and its Matrix.translate() method, I tried moving the scroll beneath the draw method line. I don't understand how to get this thing to move.
I know half of the problem:the embedded movieclip is "content" of a Loader, and you can not draw Loaders directly with bitmapData.draw(aLoader);with a normal Loader, you could access the Loader.content and draw it but not in the embedded case.adobe forums could not give an answer to this and i searched for hours through the web ...
[Embed(source="aMovieClip.swf")] private static var AMovieClip:Class; //...
I've been looking for a solution for hours now. I have a movieclip which contains an image. Created by doing: put image on stage, convert to symbol, movieclip type, ok.I'd like to extract this bitmap because I want to use (somewhere else): graphics.begintBitmapFill(); but this method needs a BitmapData object and not a movieclip to create a repeating background (in my case).
So: how do I extract the Bitmap or the Bitmap data from a MovieClip?mind that attaching BitmapData as a base class to this symbol is NOT AN OPTION
I have a movieclip with an image that has transparency and filters applied to the movieclip.I know I can use "draw" to copy the movieclip to a bitmapdata object, but it doesn't seem to copy the filters and the transparency of the image. How can I copy these so the bitmapdata matches the original movieclip in appearance?
I'm trying to use BitmapData Class to capture an animated movieclip and adding it to the display list by using addChild, but it's causing my computer to bog down because it's adding a zillion children. what do I do to remove the old, or rather, update the current child with the new one?
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.