使用非矩形形状在 flex 中裁剪图像

Posted

技术标签:

【中文标题】使用非矩形形状在 flex 中裁剪图像【英文标题】:Crop image in flex using a non-rectangular shape 【发布时间】:2009-10-30 10:26:30 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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 才能使用BlendModes,但这在文档中并不清楚。)

【讨论】:

以上是关于使用非矩形形状在 flex 中裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章

canvas- 裁剪不同形状的图像

裁剪图像包含在 4 边(非矩形)多边形中

如何在 iOS 中裁剪非矩形区域

如何明智地裁剪图像形状?

HTML5 画布在非矩形部分裁剪并保存图像

如何根据触摸时创建的形状裁剪图像?