0

我有背景图像和较小的图像。我使用 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,所以我很好奇是否可以使用该滤镜,将其应用于位图图像并将旋转后的图像复制到背景图像中。

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

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

下一步是什么?这可能吗?

4

1 回答 1

1

如果要将单个过滤器应用于位图,请使用 BitmapData.applyFilter() 方法。显然,您可以对生成的位图做任何事情。但是,您必须在 UIComponent 允许的较低级别上应用所有这些。如果你的 resizedImage 是 Bitmap 类型,你可以这样做:

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

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

于 2012-09-20T05:19:06.017 回答