【问题标题】:Add a watermark to image before uploading? AS3 + Flex上传前给图片加水印? AS3 + 弹性
【发布时间】:2012-03-11 16:54:18
【问题描述】:

在过去的几个小时里,我一直在尝试想办法在使用FileReference.upload(); 方法上传图像文件之前将水印添加到图像文件中。上传已经工作了。我只需要弄清楚如何在图像文件的右下方获得一个小水印(具有 alpha 透明度的 PNG 图像)。另一件事是,我不想修改源文件。我只是想在上传时添加水印。

对于这种类型的设置,您会推荐什么方法?我似乎也找不到任何可以用于这件事的预制课程。这不是很常见的任务吗? 我不能使用服务器端 (PHP) 来添加水印,因为我直接与服务的 API 通信,而不是通过我的服务器。

【问题讨论】:

  • 问题是您必须将图像加载到 Flash Player 内存中,然后像下面的答案一样执行一些操作,然后将其发送到服务器。正常的文件上传将您的文件流式传输到服务器,以便一次仅将几个字节加载到内存中。这可能适用于小文件,但对于较大的图像,您会遇到麻烦。这是您可以处理的权衡吗?
  • 我仍在考虑我的选择。如果事实证明它对应用程序的负载太大,我可能不得不重新考虑我的方法。

标签: actionscript-3 apache-flex image-processing upload watermark


【解决方案1】:

您可以将水印(alpha 图像)设置为比您在组或框中上传图像更高的子索引,您可以将这些容器保存为位图或 jpeg 图像。

   <s:BorderContainer width="100%" height="100%" backgroundColor="0x3322ff" id="comp">
        <s:Image source="{upload-image-source}" width="100%" height="100%"/> 
        <s:Image source="{water-mark-image-source(alpha png file)}" width="100%" height="100%"/> 
    </s:BorderContainer>

您可以将此容器保存为图像。

        var bmpd:BitmapData = new BitmapData(comp.width,comp.height);
        bmpd.draw(comp);

        var jpgenc:JPEGEncoder = new JPEGEncoder(80);
        var imgByteArray:ByteArray = jpgenc.encode(bmpd);

【讨论】:

    【解决方案2】:

    基本上只需将图像和水印添加到 BitmapData,然后使用 PNG 编码器(例如 http://www.kaourantin.net/2005/10/png-encoder-in-as3.html)从生成的图像中创建 PNG。然后您可以上传到您的服务器,原始图像将保持不变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多