using Leadtools;
using Leadtools.Codecs;
using Leadtools.Wia;
WiaSession myWiaSession;
public void GetPropertyBufferExample(IntPtr parent)
{
if (!WiaSession.IsAvailable(WiaVersion.Version1))
{
MessageBox.Show("WIA version 1.0 not installed.");
return;
}
myWiaSession = new WiaSession();
myWiaSession.Startup(WiaVersion.Version1);
DialogResult res = myWiaSession.SelectDeviceDlg(parent, WiaDeviceType.StreamingVideo, WiaSelectSourceFlags.NoDefault);
if (res != DialogResult.OK)
{
MessageBox.Show("Error selecting WIA device.");
myWiaSession.Shutdown();
return;
}
object rootItem = myWiaSession.GetRootItem(null);
if (rootItem != null)
{
myWiaSession.EnumItemsEvent += new EventHandler<WiaEnumItemsEventArgs>(wiaSession_EnumItemsEvent2);
myWiaSession.EnumChildItems(rootItem);
myWiaSession.EnumItemsEvent -= new EventHandler<WiaEnumItemsEventArgs>(wiaSession_EnumItemsEvent2);
}
myWiaSession.Shutdown();
}
void wiaSession_EnumItemsEvent2(object sender, WiaEnumItemsEventArgs e)
{
if (e.Item != null)
{
// Read the camera item thumbnail property.
Stream stream = myWiaSession.GetPropertyBuffer(e.Item, null, WiaPropertyId.CameraItemThumbnail);
// Read the camera thumbnail width property.
int nWidth = myWiaSession.GetPropertyLong(e.Item, null, WiaPropertyId.CameraItemThumbWidth);
// Read the camera thumbnail height property.
int nHeight = myWiaSession.GetPropertyLong(e.Item, null, WiaPropertyId.CameraItemThumbHeight);
int userDataLen = (int)stream.Length;
byte[] userData = new byte[userDataLen];
stream.Read(userData, 0, userDataLen);
using (RasterImage thumbImage = new RasterImage(
RasterMemoryFlags.User,
nWidth,
nHeight,
24,
RasterByteOrder.Bgr,
RasterViewPerspective.LeftTop,
null,
userData,
userDataLen))
{
using (RasterCodecs codecs = new RasterCodecs())
{
codecs.Save(thumbImage, Path.Combine(LEAD_VARS.ImagesDir, "WiaThumb.jpg"), RasterImageFormat.Jpeg, 24);
}
}
myWiaSession.FreeItem(e.Item);
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Wia
Dim myWiaSession As WiaSession
<TestMethod()> _
Public Sub GetPropertyBufferExample(ByVal parent As IntPtr)
If (Not wiaSession.IsAvailable(WiaVersion.Version1)) Then
MessageBox.Show("WIA version 1.0 not installed.")
Return
End If
myWiaSession = New WiaSession()
myWiaSession.Startup(WiaVersion.Version1)
Dim res As DialogResult = myWiaSession.SelectDeviceDlg(parent, WiaDeviceType.StreamingVideo, WiaSelectSourceFlags.NoDefault)
If res <> DialogResult.OK Then
MessageBox.Show("Error selecting WIA device.")
myWiaSession.Shutdown()
Return
End If
Dim rootItem As Object = myWiaSession.GetRootItem(Nothing)
If Not rootItem Is Nothing Then
AddHandler myWiaSession.EnumItemsEvent, AddressOf session_EnumItemsEvent2
myWiaSession.EnumChildItems(rootItem)
RemoveHandler myWiaSession.EnumItemsEvent, AddressOf session_EnumItemsEvent2
End If
myWiaSession.Shutdown()
End Sub
Private Sub session_EnumItemsEvent2(ByVal sender As Object, ByVal e As WiaEnumItemsEventArgs)
If Not IsNothing(e.Item) Then
' Read the camera item thumbnail property.
Dim stream As Stream = myWiaSession.GetPropertyBuffer(e.Item, Nothing, WiaPropertyId.CameraItemThumbnail)
' Read the camera thumbnail width property.
Dim nWidth As Integer = myWiaSession.GetPropertyLong(e.Item, Nothing, WiaPropertyId.CameraItemThumbWidth)
' Read the camera thumbnail height property.
Dim nHeight As Integer = myWiaSession.GetPropertyLong(e.Item, Nothing, WiaPropertyId.CameraItemThumbHeight)
Dim userDataLen As Integer = CType(stream.Length, Integer)
Dim userData(userDataLen - 1) As Byte
stream.Read(userData, 0, userDataLen)
Using thumbImage As New RasterImage(
RasterMemoryFlags.User,
nWidth,
nHeight,
24,
RasterByteOrder.Bgr,
RasterViewPerspective.LeftTop,
Nothing,
userData,
userDataLen)
Using codecs As New RasterCodecs()
codecs.Save(thumbImage, Path.Combine(LEAD_VARS.ImagesDir, "WiaThumb.jpg"), RasterImageFormat.Jpeg, 24)
End Using
End Using
myWiaSession.FreeItem(e.Item)
End If
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class