Adobe Air:构建用于图像裁剪和调整大小的应用程序

时间:2014-04-01 23:02:21

标签: flash flex air

我是建立Adobe Air应用程序的新手。找不到可以教我的教程

  1. 如何在应用程序中上传图像?
  2. 如何裁剪图片?
  3. 或如何调整图片大小?
  4. 将已编辑的图像下载到桌面。
  5. 请帮帮我 当我google它时,谷歌会显示所有应用程序。它没有在搜索结果中给我一个教程。

    我了解基本的flex概念并使用Flex Builder 4.6 IDE。

1 个答案:

答案 0 :(得分:0)

这个问题相当广泛,所以我只是给出你需要做的基本步骤。

  1. 使用FileReference.browse()(或File.browse(),它是FileReference的子类)让用户使用本机ui选择文件。收听Event.COMPLETE。在completeHandler中,您可以访问文件的url或nativePath。 在移动系统上,这可能会限制您可以导航的文件夹。

  2. 使用Loader加载图像,或者,如果使用spark.Image或spark.BitmapImage组件来显示图像,只需将url从fileReference传递到组件的source属性即可。在任何情况下,您都必须再次侦听COMPLETE事件,以便了解图像何时加载。

  3. 要裁剪或调整图像大小,请使用Bitmap和BitmapData。 如果您正在使用Loader,则可以通过typeCasting Loader.content获取源位图数据的副本作为位图(var bmp:BitmapData =(Loader.content as Bitmap).bitmapData;)。 BitmapImage和Image都有一个可以使用的bitmapData属性。 对于裁剪:a)定义源矩形b)使用rect的宽度和高度创建一个新的BitmapData,c)在源位图上使用bitmapData.draw()方法并传入目标bitmapData和rect。 调整大小:基本相同,只需定义一个变换Matrix而不是一个Rectangle,并将其应用于draw函数。不要简单地缩小Loader / Image / BitmapImage并尝试复制它,因为这不会影响它包含位图。 您还可以组合矩阵和矩形,并一步完成所有操作。

  4. 使用它的encode()方法将bitmapData编码为jpg或png。生成的ByteArray是您的新文件内容。此步骤可能有点慢,尤其是在移动设备上。有几种解决方案可以加快速度。尝试使用“JPEGEncoder [air]”

  5. 进行搜索
  6. 保存文件。这里有很多选择。最简单的是使用File.browseForSave()。这样,用户可以使用本机ui选择文件对话框的名称和路径。如果您希望在动作脚本中执行此操作,还可以使用FileStream.writeBytes()

  7. 这是一个非常粗略的概述如何实现您的目标,远非明确细节,也不是唯一的方法。但它应该让你朝着正确的方向前进。希望这会有所帮助。