Как получить последний снимок - PullRequest
0 голосов
/ 08 февраля 2012

Может кто-нибудь сказать мне, как получить предварительное изображение последней снятой фотографии с моей камеры с помощью WIA?

Это все, что вам нужно для фотосъемки:

//select device
WIA.CommonDialog dialog = new WIA.CommonDialog();
WIA.Device camera = dialog.ShowSelectDevice(WIA.WiaDeviceType.CameraDeviceType, false, true);

//take picture 
camera.ExecuteCommand("{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}");

с этим я могу получить все свойства камеры, но нет последней информации о снимке:

string p = "";
foreach (Property p in camera.Properties)
{
    p += p.Name + ":\t" + p.get_Value() + "\n";
}
MessageBox.Show(p);

1 Ответ

3 голосов
/ 09 февраля 2012

ExecuteCommand возвращает WIA.Item, который предоставляет метод Transfer:

WIA.CommonDialog dialog = new WIA.CommonDialog();
WIA.Device camera = dialog.ShowSelectDevice(WIA.WiaDeviceType.CameraDeviceType, false, true);
WIA.Item takenItem = camera.ExecuteCommand("{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}");

foreach (string formatId in takenItem.Formats)
{
    if (Guid.Parse(formatId) == System.Drawing.Imaging.ImageFormat.Jpeg.Guid)
    {
        WIA.ImageFile wiaImage = takenItem.Transfer(formatId);

        var imageData = new MemoryStream( wiaImage.FileData.get_BinaryData());
        var image = Image.FromStream(imageData);
        //pictureBox1.Image = image;
    }
}
...