Question

I have background image and smaller image. I copy the smaller image into the bigger image using copypixels like this:

   destBitMap.copyPixels(img, new Rectangle(0, 0, img.width, img.height), 
   location);

Now I want to rotate the image before copying it. Whats the best way to do it? I tried using Matrix and bitmapData.draw() but its unacceptable. it has pixelated edges.

I found this pixelbender filter : http://life.neophi.com/danielr/2009/07/image_rotation_with_pixel_bend.html for rotating images. on the plus side, it is really fast. I never used pixelbender so Im curious if its possible to take that filter, apply it to bitmapimage and copy the rotated image into the background image.

This is what Ive tried (which doesnt work):

    shader = new Shader(new RotateFilter() as ByteArray);
    shader.data.origin.value = [resizedImage.width / 2, resizedImage.width / 2];
    shader.data.rotation.value = [rotation];
    filter = new ShaderFilter(shader);

    var bm:BitmapImage = new BitmapImage();
    bm.source = resizedImage;
    bm.filters = [filter];

Whats next? Is this possible at all?

Was it helpful?

Solution

If you want to apply a single filter to a bitmap, use BitmapData.applyFilter() method. Obviously, you can do anything with the resultant bitmap. But, you have to apply all this on a lower level than UIComponent allows. If your resizedImage is type Bitmap, you do this:

resizedImage.bitmapData.applyFilter(resizedImage.bitmapData,resizedImage.bitmapData.rect,new Point(),filter);

After this, your resizedImage.bitmapData will contain a rotated bitmap.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top