我有背景图片和较小的图像。我使用像这样的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];
接下来是什么?这有可能吗?
答案 0 :(得分:1)
如果要将单个过滤器应用于位图,请使用BitmapData.applyFilter()方法。显然,您可以对结果位图执行任何操作。但是,您必须在比UIComponent允许的更低级别上应用所有这些。如果resizedImage是类型Bitmap,则执行以下操作:
resizedImage.bitmapData.applyFilter(resizedImage.bitmapData,resizedImage.bitmapData.rect,new Point(),filter);
在此之后,resizedImage.bitmapData将包含一个旋转的位图。