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

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

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

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

【问题讨论】:

    标签: apache-flex image crop


    【解决方案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,但这在文档中并不清楚。)

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多