2017-02-22 2 views
2

Ich versuche, ein Foto in meiner Hololens App zu erfassen. Es scheint zu funktionieren, aber das Bild an einem dunklen Ort zu speichern, auf den ich nicht zugreifen oder schauen kann. Ich möchte es in meiner Bilderbibliothek Described here I think speichern. Oder wo sollte ich das Bild speichern, damit ich es in meinen Fotos auf den Hololens sehen kann.Speichern eines Bildes in Fotos Ordner In Hololens App

filePath = C:/Daten/Users/JanikJoe/AppData/Local/Packages/HoloToolkit-Unity_pzq3xp76mxafg/LocalState \ CapturedImage10.02831_n.jpg

filePath2 = C:/Daten/Users/Default/AppData/Local /DevelopmentFiles/HoloToolkit-UnityVS.Debug_x86.janik/Data\CapturedImage10.02831_n.jpg

using UnityEngine; 
using UnityEngine.VR.WSA.WebCam; 
using System.Linq; 

public class PhotoCaptureFVTC : MonoBehaviour { 

UnityEngine.VR.WSA.WebCam.PhotoCapture photoCaptureObject = null; 
// Use this for initialization 
void Start() 
{ 
    Debug.Log("snap pic taken"); 
    PhotoCapture.CreateAsync(false, OnPhotoCaptureCreated); 
} 

public void OnPhotoCaptureCreated(PhotoCapture captureObject) 
{ 
    photoCaptureObject = captureObject; 

    //Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); 
    Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); 

    CameraParameters c = new CameraParameters(); 
    c.hologramOpacity = 0.0f; 
    c.cameraResolutionWidth = cameraResolution.width; 
    c.cameraResolutionHeight = cameraResolution.height; 
    c.pixelFormat = CapturePixelFormat.BGRA32; 

    captureObject.StartPhotoModeAsync(c, false, OnPhotoModeStarted); 
} 
void OnStoppedPhotoMode(PhotoCapture.PhotoCaptureResult result) 
{ 
    photoCaptureObject.Dispose(); 
    photoCaptureObject = null; 
} 

private void OnPhotoModeStarted(PhotoCapture.PhotoCaptureResult result) 
{ 
    if (result.success) 
    { 
     string filename = string.Format(@"CapturedImage{0}_n.jpg", Time.time); 
     string filePath = System.IO.Path.Combine(Application.persistentDataPath, filename); 
     string filePath2 = System.IO.Path.Combine(Application.dataPath, filename); 

     photoCaptureObject.TakePhotoAsync(filePath, PhotoCaptureFileOutputFormat.JPG, OnCapturedPhotoToDisk); 
     Debug.LogError("Saved That Image Somewhere" +"FileName: ="+ filename + " FilePath: = " + filePath + " FilePath2: = " + filePath2); 
    } 
    else 
    { 
     Debug.LogError("Unable to start photo mode!"); 
    } 
} 
void OnCapturedPhotoToDisk(PhotoCapture.PhotoCaptureResult result) 
{ 
    if (result.success) 
    { 
     Debug.Log("Saved Photo to disk!"); 
     photoCaptureObject.StopPhotoModeAsync(OnStoppedPhotoMode); 
    } 
    else 
    { 
     Debug.Log("Failed to save Photo to disk"); 
    } 
} 


} 

Antwort

3

es scheint zu sein, dass es nicht möglich ist, direkt in der Kamerarolle Ordnern zu speichern und es gibt keine Bildbibliothek auf dem HoloLens.

Es ist die gleiche Frage hier: https://forums.hololens.com/discussion/1458/capturing-photo-in-unity-and-saving-to-disk

ich die Abhilfe versucht, und es funktioniert gut. Verschieben Sie das gespeicherte Bild einfach in den Ordner mit der Kamerarolle.

#if !UNITY_EDITOR && UNITY_WINRT_10_0 
     var cameraRollFolder = Windows.Storage.KnownFolders.CameraRoll.Path;    
     File.Move(_filePath, Path.Combine(cameraRollFolder, _filename)); 
#endif 
Verwandte Themen