我一直在按照本教程在flex中裁剪图像:http://code.mediablur.com/ImageCropper/ImageCropperDemo.html。
裁剪的核心是使用一种名为“copyPixels”的方法。但是,此方法的作用之一是其作物区域的矩形形状。我是否可以使用其他策略来裁剪它而不使用矩形。
我要让用户指定应使用一系列点进行裁剪的区域。
答案 0 :(得分: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
时应用变换。
(我认为有必要使用DisplayObject
来使用BlendMode
,但这在文档中并不清楚。)