Как получить размеры изображения из потока (без его рендеринга)?
Я делаю стандартный танец 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 ...