保存和屏蔽摄像头仍然AS3 AIR IOS

我的目标是创build一个应用程序,在这个应用程序中,用户可以拍摄他们的脸部图像,其中包括一个脸部切口的覆盖。 我需要用户能够点击屏幕并让应用程序保存图片,使用相同的面部切口进行遮罩,然后将其保存到应用程序存储区。

这是第一次在Actionscript3的IOS上使用AIR。 我知道有一个适当的目录,你应该保存在IOS上,但我不知道它。 我一直在使用SharedObjects保存其他variables…

例如:

var so:SharedObject = SharedObject.getLocal("applicationID"); 

然后写入它

 so.data['variableID'] = aVariable; 

这是我如何访问前置摄像头并显示它。 出于某种原因,要显示整个video,而不是一个狭窄的部分,我把相机的video添加到舞台上的一个animation片段,占舞台大小的50%。

 import flash.media.Camera; import flash.media.Video; import flash.display.BitmapData; import flash.utils.ByteArray; import com.adobe.images.JPGEncoder var camera:Camera = Camera.getCamera("1"); camera.setQuality(0,100); camera.setMode(1024,768, 30, false); var video:Video = new Video(); video.attachCamera(camera); videoArea.addChild(video); Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; Capture_Picture_BTN.addEventListener(TouchEvent.TOUCH_TAP, savePicture); function savePicture(event:TouchEvent):void { trace("Saving Picture"); //Capture Picture BTN var bitmapData:BitmapData = new BitmapData(1024,768); bitmapData.draw(video); } 

我很抱歉,如果这是错误的方式去做这个我仍然是相当新的动作,因为它是。 如果您需要更多信息,我将很乐意提供。

你只能通过SharedObject保存〜100kb的数据,所以你不能使用它。 这仅仅是为了保存应用程序设置,而且根据我的经验,AIR开发人员会忽略它,因为我们可以更好地控制文件系统。

我们有FileFileStream类。 这些类允许您直接从设备的磁盘读取和写入数据,这在networking上是不太可能的(用户是必须保存/打开的用户,不能自动完成)。

在我的例子之前,我必须强调你应该阅读文档 。 Adobe的LiveDocs是最好的语言/ SDK文档之一,它会指出很多我使用过的快速示例(比如对每个目录的深入讨论,如何编写各种types等)

所以,这是一个例子:

 // create the File and resolve it to the applicationStorageDirectory, which is where you should save files var f:File = File.applicationStorageDirectory.resolvePath("name.png"); // this prevents iCloud backup. false by default. Apple will reject anything using this directory for large file saving that doesn't prevent iCloud backup. Can also use cacheDirectory, though certain aspects of AIR cannot access that directory f.preventBackup = true; // set up the filestream var fs:FileStream = new FileStream(); fs.open(f, FileMode.WRITE); //open file to write fs.writeBytes( BYTE ARRAY HERE ); // writes a byte array to file fs.close(); // close connection 

所以这将保存到磁盘。 要读取,请在READ模式下打开FileStream。

 var fs:FileStream = new FileStream(); var output:ByteArray = new ByteArray(); fs.open(f, FileMode.READ); //open file to write fs.readBytes( output ); // reads the file into a byte array fs.close(); // close connection 

再次请阅读文档。 FileStream支持各种types的几十种读写方法。 您需要为您的情况select正确的( readBytes()writeBytes()应该在所有情况下都能正常工作,尽pipe有些情况下您应该使用更具体的方法)

希望有所帮助。