Loads extensions from the specified Exif file.
Syntax
Parameters
- fileName
- The input file name.
- pageNumber
- 1-based index of the page within the file that contains the extension.
Return Value
An
CodecsExtensionList object that contains the extensions found in this file.
Example
This example will show detailed information on the streams present in the Exif file.
Visual Basic | Copy Code |
---|
Private Sub ExtensionsExample(ByVal exifFileName As String)
RasterCodecs.Startup()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim stampFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Extension.bmp"
Dim audioFileNameTemplate As String = LeadtoolsExamples.Common.ImagesPath.Path + "Extension{0}.wav"
Console.WriteLine("Reading the extensions from the exif file")
Dim extensionList As CodecsExtensionList = codecs.ReadExtensions(exifFileName, 1)
If Not extensionList Is Nothing Then
If (extensionList.Flags And CodecsExtensionListFlags.Stamp) = CodecsExtensionListFlags.Stamp Then
Console.WriteLine("Stamp extension: Found, saving to {0}", stampFileName)
Dim stampImage As RasterImage = extensionList.CreateStamp()
codecs.Save(stampImage, stampFileName, RasterImageFormat.Bmp, 24)
stampImage.Dispose()
Else
Console.WriteLine("Stamp extension: Not found")
End If
If (extensionList.Flags And CodecsExtensionListFlags.Audio) = CodecsExtensionListFlags.Audio Then
Console.WriteLine("Audio extension: Found, saving ...")
Dim audioData As RasterNativeBuffer
Dim streamIndex As Integer = 0
Do
audioData = extensionList.GetAudioData(streamIndex)
If audioData.Data <> IntPtr.Zero Then
Dim audioFileName As String = String.Format(audioFileNameTemplate, streamIndex)
Console.WriteLine("To {0}", audioFileName)
Using fs As FileStream = File.Create(audioFileName)
Dim data As Byte() = New Byte(CInt(audioData.Length) - 1) {}
Marshal.Copy(audioData.Data, data, 0, CInt(audioData.Length))
fs.Write(data, 0, CInt(audioData.Length))
End Using
streamIndex += 1
End If
Loop While audioData.Data <> IntPtr.Zero
Console.WriteLine("{0} total audio streams found", streamIndex)
Else
Console.WriteLine("Audio extension: Not found")
End If
Dim extensions As CodecsExtension() = extensionList.GetExtensions()
Console.WriteLine("Total number of extensions found in the file: {0}", extensions.Length)
Dim i As Integer = 0
Do While i < extensions.Length
Dim extension As CodecsExtension = extensions(i)
Console.WriteLine(" {0}. Name: {1}, Clsid: {2}, UCDefault: {3}, DatLength: {4}", i, extension.Name, extension.Clsid, extension.UCDefault, extension.DataLength)
i += 1
Loop
extensionList.Dispose()
Else
Console.WriteLine("No extensions were found in the file")
End If
codecs.Dispose()
RasterCodecs.Shutdown()
End Sub |
C# | Copy Code |
---|
void ExtensionsExample(string exifFileName) { RasterCodecs.Startup(); RasterCodecs codecs = new RasterCodecs(); string stampFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Extension.bmp"; string audioFileNameTemplate = LeadtoolsExamples.Common.ImagesPath.Path + "Extension{0}.wav"; // Read the extensions from the file Console.WriteLine("Reading the extensions from the exif file"); CodecsExtensionList extensionList = codecs.ReadExtensions(exifFileName, 1); if(extensionList != null) { if((extensionList.Flags & CodecsExtensionListFlags.Stamp) == CodecsExtensionListFlags.Stamp) { Console.WriteLine("Stamp extension: Found, saving to {0}", stampFileName); RasterImage stampImage = extensionList.CreateStamp(); codecs.Save(stampImage, stampFileName, RasterImageFormat.Bmp, 24); stampImage.Dispose(); } else Console.WriteLine("Stamp extension: Not found"); if((extensionList.Flags & CodecsExtensionListFlags.Audio) == CodecsExtensionListFlags.Audio) { Console.WriteLine("Audio extension: Found, saving ..."); RasterNativeBuffer audioData; int streamIndex = 0; do { audioData = extensionList.GetAudioData(streamIndex); if(audioData.Data != IntPtr.Zero) { string audioFileName = string.Format(audioFileNameTemplate, streamIndex); Console.WriteLine("To {0}", audioFileName); using(FileStream fs = File.Create(audioFileName)) { byte[] data = new byte[audioData.Length]; Marshal.Copy(audioData.Data, data, 0, (int)audioData.Length); fs.Write(data, 0, (int)audioData.Length); } streamIndex++; } } while(audioData.Data != IntPtr.Zero); Console.WriteLine("{0} total audio streams found", streamIndex); } else Console.WriteLine("Audio extension: Not found"); CodecsExtension[] extensions = extensionList.GetExtensions(); Console.WriteLine("Total number of extensions found in the file: {0}", extensions.Length); for(int i = 0; i < extensions.Length; i++) { CodecsExtension extension = extensions[i]; Console.WriteLine(" {0}. Name: {1}, Clsid: {2}, UCDefault: {3}, DatLength: {4}", i, extension.Name, extension.Clsid, extension.UCDefault, extension.DataLength); } extensionList.Dispose(); } else Console.WriteLine("No extensions were found in the file"); codecs.Dispose(); RasterCodecs.Shutdown(); } |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also