在Windows商店应用程序上缓慢拍照和处理

时间:2014-07-23 17:41:34

标签: c# image windows-store-apps

我正在开发Surface RT中使用的Windows应用商店应用。 这基本上是一份调查问卷,每份调查问卷需要3张照片。 这就是我预览和拍照的方式

    async public void TakePictureFor(RackAuditQuestions q)
    {
        CameraCaptureUI cameraUI = new CameraCaptureUI();
        cameraUI.PhotoSettings.AllowCropping = false;
        cameraUI.PhotoSettings.MaxResolution = CameraCaptureUIMaxPhotoResolution.MediumXga;
        Windows.Storage.StorageFile capturedMedia = await cameraUI.CaptureFileAsync(CameraCaptureUIMode.Photo);            
        if (capturedMedia != null)
        {                
            using (var streamCamera = await capturedMedia.OpenAsync(FileAccessMode.Read))
            {
                BitmapImage bitmapCamera = new BitmapImage();
                bitmapCamera.SetSource(streamCamera);
                // This display the image in a bound object to the XAML
                q.Image = bitmapCamera;                    
                int width = bitmapCamera.PixelWidth;
                int height = bitmapCamera.PixelHeight;
                q.pictureStream = await capturedMedia.OpenAsync(FileAccessMode.Read);
            }
        }
    }

在大量使用约7天后*从触摸屏幕开始直到控制返回给用户,拍摄单张照片大约需要18秒。我做了video of this. To illustrate it better

*大量使用我的意思是每天100张照片。重新安装应用程序使一切正常,但不重新启动表面或应用程序

由于拍照过程基本上委托给操作系统,因此我不在乎。我不知道在哪里看。任何想法

1 个答案:

答案 0 :(得分:0)

如果你正在使用CaptureFileAsync(就像我一样),那么这里有一个存储在temp文件夹中的图片副本: C:\用户{用户名} \应用程序数据\本地\ {包你的包,GUID} \ TempState (您在Package.appxmanifest中设置包的名称)

您可以通过

获取代码中的文件列表
StorageFolder temp = ApplicationData.Current.TemporaryFolder;
IReadOnlyList<StorageFile> fileList = await temp.GetFilesAsync();

我只是在将数据提交到服务器时将它们全部删除,但这取决于您。 Hoipe这可以帮助任何陷入这个问题的人,因为它帮助了我。