在Windows 8中替换PhotoChooserTask

时间:2013-03-31 02:18:28

标签: c# xaml windows-8 windows-runtime

我正在使用Windows 8应用,并希望提示用户提供图片。

使用Windows Phone我会使用PhotoChooserTask,指定所需的像素高度和宽度,并且相机是可接受的输入法。

我发现在Windows 8中我需要使用CameraCaptureUI或FileOpenPicker来为用户提供类似的选项。我还需要使用FileOpenPicker手动处理生成的图像到所需的尺寸。 CameraCaptureUI内置了裁剪控件。

是否有可以使用的库或控件可以提供与Windows Phone PhotoChooserTask类似的功能?或者我可以访问CameraCaptureUI的裁剪控制部分吗?

具体来说,我想提示用户提供特定尺寸的图像。然后,他们可以从文件中选择图像或通过相机捕获新图像。一旦他们有了图像,他们就会看到一个用户界面,将其裁剪成我所需的尺寸。

2 个答案:

答案 0 :(得分:1)

CameraCaptureUI是正确的方法。您可以指定照片捕获的属性,如本文档中所述:http://msdn.microsoft.com/en-us/library/windows/apps/windows.media.capture.cameracaptureui.photosettings

它将为用户提供一个很好的界面来拍摄照片并裁剪/调整它,就像在Windows Phone中一样!

// Takes a photo with specified settings.
function takePhoto() {
    var captureUI = new Windows.Media.Capture.CameraCaptureUI();
    captureUI.photoSettings.allowCropping = true;
    captureUI.photoSettings.croppedAspectRatio.height = 3;
    captureUI.photoSettings.croppedAspectRatio.width = 4;
    captureUI.photoSettings.croppedSizeInPixels.height = 0;
    captureUI.photoSettings.croppedSizeInPixels.width = 0;
    captureUI.photoSettings.format = Windows.Media.Capture.CameraCaptureUIPhotoFormat.jpeg;
    captureUI.photoSettings.maxResolution = Windows.Media.Capture.CameraCaptureUIMaxPhotoResolution.highestAvailable;
    captureUI.captureFileAsync(Windows.Media.Capture.CameraCaptureUIMode.photo).then(function (capturedItem) {
        if (capturedItem) {
            document.getElementById("message").innerHTML = "User captured a photo."
        }
        else {
            document.getElementById("message").innerHTML = "User didn't capture a photo."
        }
    });
}

答案 1 :(得分:1)

您可以为用户提供一个可供选择的按钮,然后允许他们选择相机,或者使用类似于Calisto中的菜单来存在。或者你可以给他们两个按钮。使用Windows 8,您可以通过电话获得更多的空间。

要直接转到图片,您可以设置FileOpenPicker的SuggestedStartLocation。这家酒店接受PickerLoctionId。您应该将其设置为PickerLoctionId.PicturesLibrary