Как получить размеры изображения из потока (без его рендеринга)?

Я делаю стандартный танец CameraChooserTask. В моем обратном вызове я хотел бы получить размеры захваченного фото.

Я пытался с помощью BitmapImage, как показано ниже, но так как BitmapImage не является частью дерева рендеринга, я не думаю, что это на самом деле делает какое-либо декодирование (его ImageOpened событие не срабатывает).

private void CameraCapture_Completed(object sender, PhotoResult e)
{
  if (e.TaskResult == TaskResult.OK && e.ChosenPhoto != null)
  {
    // This code DOES NOT work:
    // BitmapImage bi = new BitmapImage();
    // bi.SetSource(stream);
    // ... use bi.PixelHeight and bi.PixelWidth ...

1 ответ

Решение

Ах, хитрость в том, чтобы заставить кого-то использовать BitmapSource, Назначив его в качестве источника для Image, PixelHeight а также PixelWidth свойства устанавливаются.

private void CameraCapture_Completed(object sender, PhotoResult e)
{
  if (e.TaskResult == TaskResult.OK && e.ChosenPhoto != null)
  {
    BitmapImage bi = new BitmapImage();
    bi.SetSource(stream);

    Image image = new Image();
    image.Source = bi;

    // ... use bi.PixelHeight and bi.PixelWidth ...
Другие вопросы по тегам