Unity 6.3
0 онлайн 59 гостей 3 в системе
Вход

PhotoCapture.TakePhotoAsync

Declaration

public void TakePhotoAsync(string filename, Windows.WebCam.PhotoCaptureFileOutputFormat fileOutputFormat, Windows.WebCam.PhotoCapture.OnCapturedToDiskCallback onCapturedPhotoToDiskCallback);
public void TakePhotoAsync(Windows.WebCam.PhotoCapture.OnCapturedToMemoryCallback onCapturedPhotoToMemoryCallback);

Параметры

Параметр Описание
имя файла Место, где должна быть сохранена фотография. Имя файла должно заканчиваться на расширение png или jpg.
fileOutputFormat Формат кодировки, который должен использоваться.
onCapturedPhotoToDiskCallback Вызывается после сохранения фотографии на диск.
onCapturedPhotoToMemoryCallback Вызывается после того, как фотография была скопирована в текстуру назначения.

Описание

Асинхронно захватывает фотографию с веб-камеры и сохраняет ее на диск.

Этот метод может быть использован двумя способами. Вы можете использовать этот метод для записи фотографии с веб-камеры непосредственно в память CPU. Затем вы можете применить данные изображения к текстуре для использования в Unity или передать данные изображения внешнему плагину. При записи фотографии непосредственно в память, вы также получите пространственную информацию, которая позволит вам знать, где изображение было сделано пространственно. Вы также можете записать фотографию непосредственно на диск как png или jpg.

EXIF метаданные будут закодированы в запечатленное изображение при сохранении изображения в формате JPEG. Вы можете сохранить запечатленное изображение в формате JPEG при использовании пиксельных форматов BGRA32 и NV12. Вы можете сохранить запечатленное изображение только как PNG при использовании пиксельного формата BGRA32.

В этом примере будет записано изображение из веб-камеры Camera и сохранено на диск.

using UnityEngine;
using System.Collections;
using System.Linq;
using UnityEngine.Windows.WebCam;

public class PhotoCaptureToDiskExample : MonoBehaviour { PhotoCapture photoCaptureObject = null;

static readonly int TotalImagesToCapture = 3; int capturedImageCount = 0;

// Use this for initialization void Start() { Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); Texture2D targetTexture = new Texture2D(cameraResolution.width, cameraResolution.height);

PhotoCapture.CreateAsync(false, delegate(PhotoCapture captureObject) { Debug.Log("Created PhotoCapture Object"); photoCaptureObject = captureObject;

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

captureObject.StartPhotoModeAsync(c, delegate(PhotoCapture.PhotoCaptureResult result) { Debug.Log("Started Photo Capture Mode"); TakePicture(); }); }); }

void OnCapturedPhotoToDisk(PhotoCapture.PhotoCaptureResult result) { Debug.Log("Saved Picture To Disk!");

if (capturedImageCount < TotalImagesToCapture) { TakePicture(); } else { photoCaptureObject.StopPhotoModeAsync(OnStoppedPhotoMode); } }

void TakePicture() { capturedImageCount++; Debug.Log(string.Format("Taking Picture ({0}/{1})...", capturedImageCount, TotalImagesToCapture)); string filename = string.Format(@"CapturedImage{0}.jpg", capturedImageCount); string filePath = System.IO.Path.Combine(Application.persistentDataPath, filename);

photoCaptureObject.TakePhotoAsync(filePath, PhotoCaptureFileOutputFormat.JPG, OnCapturedPhotoToDisk); }

void OnStoppedPhotoMode(PhotoCapture.PhotoCaptureResult result) { photoCaptureObject.Dispose(); photoCaptureObject = null;

Debug.Log("Captured images have been saved at the following path."); Debug.Log(Application.persistentDataPath); } }