2

我一直在按照本教程在 flex 中裁剪图像:http: //code.mediablur.com/ImageCropper/ImageCropperDemo.html

其裁剪的核心是使用一种称为“copyPixels”的方法。但是,此方法将其裁剪区域的矩形形状作为其参数之一。我可以使用其他策略来裁剪它而不使用矩形。

我要让用户指定应该使用一系列点裁剪的区域。

4

1 回答 1

0

当然,生成的图像必须是一个矩形,但您可以使用BitmapData.draw和使用透明度进行遮罩BlendMode

var originalImage:BitmapData; // defined
var maskPath:GraphicsPath; // defined

var maskShape:Shape = new Shape();
maskShape.graphics.beginFill(0, 0); // fill region with transparent
maskShape.graphics.drawRect(0, 0, originalImage.width, originalImage.height);
maskShape.graphics.endFill();

maskShape.graphics.beginFill(0xFF0000);
maskShape.graphics.drawPath(maskPath.commands, maskPath.data, maskPath.winding);
maskShape.graphics.endFill();

var resultImage:BitmapData = originalImage.clone();
resultImage.draw(maskShape, null, null, BlendMode.ALPHA);

对于裁剪,您可能会在最后几行中做一些更花哨的事情——复制一个区域而不是克隆整个区域originalImage,和/或在应用maskShape.

(我认为有必要使用 aDisplayObject来使用BlendModes,但这在文档中并不清楚。)

于 2009-10-30T16:55:23.540 回答