Как получить размеры изображения из потока (без его рендеринга)? - PullRequest
1 голос
/ 10 июля 2011

Я делаю стандартный танец 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 Ответ

2 голосов
/ 10 июля 2011

Ах, хитрость в том, чтобы заставить кого-то использовать 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 ...
...