0

我正在开发一个 Windows 8 应用程序,并希望提示用户提供图像。

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

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

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

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

4

2 回答 2

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."
        }
    });
}
于 2013-03-31T02:45:59.627 回答
1

您可以为用户提供一个可供选择的按钮,然后允许他们选择任一相机,或使用像 Calisto 中的菜单一样的现有相机。或者您可以为他们提供两个按钮。使用 Windows 8,您拥有比手机更多的空间。

直接去图片,可以设置FileOpenPicker的SuggestedStartLocation。此属性接受PickerLoctionId。您应该将其设置为PickerLoctionId.PicturesLibrary

于 2013-03-31T02:49:21.423 回答