使用pixelbender旋转图像

时间:2012-09-20 04:52:47

标签: actionscript-3 flex bitmap rotation pixel-bender

我有背景图片和较小的图像。我使用像这样的copypixels将较小的图像复制到较大的图像中:

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

现在我想在复制之前旋转图像。什么是最好的方法呢? 我尝试使用Matrix和bitmapData.draw(),但这是不可接受的。它有像素化的边缘。

我找到了这个pixelbender过滤器:http://life.neophi.com/danielr/2009/07/image_rotation_with_pixel_bend.html 用于旋转图像。从好的方面来说,它真的很快。我从来没有使用过pixelbender所以我很好奇是否有可能采用该过滤器,将其应用于bitmapimage并将旋转后的图像复制到背景图像中。

这是我尝试过的(不起作用):

    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];

接下来是什么?这有可能吗?

1 个答案:

答案 0 :(得分:1)

如果要将单个过滤器应用于位图,请使用BitmapData.applyFilter()方法。显然,您可以对结果位图执行任何操作。但是,您必须在比UIComponent允许的更低级别上应用所有这些。如果resizedImage是类型Bitmap,则执行以下操作:

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

在此之后,resizedImage.bitmapData将包含一个旋转的位图。