←Select platform

ReadExtensions(string,int) Method

Summary
Loads extensions from the specified EXIF file.
Syntax
C#
Objective-C
C++/CLI
Python
public CodecsExtensionList ReadExtensions( 
   string fileName, 
   int pageNumber 
) 
- (nullable LTCodecsExtensionList *)readExtensionsFromFile:(NSString *)file  
                                                pageNumber:(NSInteger)pageNumber  
                                                     error:(NSError **)error 
public: 
CodecsExtensionList^ ReadExtensions(  
   String^ fileName, 
   int pageNumber 
)  
def ReadExtensions(self,fileName,pageNumber): 

Parameters

fileName
The input file name.

pageNumber
1-based index of the page within the file that contains the extension.

Return Value

A CodecsExtensionList object that contains the extensions found in this file.

Remarks

Please note that not all Exif files have extensions.

Currently, this method works only with Exif files. Exif files can contain extra data stored as "FlashPix extensions". This method can be used to access this extra data. LEADTOOLS refers to this extra data as "extensions".

You must dispose the CodecsExtensionList returned from this method when you are done using it.

Example

This example will show detailed information on the streams present in the Exif file.

C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
public void ExtensionsExample(string exifFileName) 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string stampFileName = Path.Combine(LEAD_VARS.ImagesDir, "Extension.bmp"); 
   string audioFileNameTemplate = Path.Combine(LEAD_VARS.ImagesDir, "Extension.wav"); 
 
   // Read the extensions from the file 
   Debug.WriteLine("Reading the extensions from the exif file"); 
   CodecsExtensionList extensionList = codecs.ReadExtensions(exifFileName, 1); 
   if (extensionList != null) 
   { 
      if ((extensionList.Flags & CodecsExtensionListFlags.Stamp) == CodecsExtensionListFlags.Stamp) 
      { 
         Debug.WriteLine("Stamp extension: Found, saving to {0}", stampFileName); 
         RasterImage stampImage = extensionList.CreateStamp(); 
         codecs.Save(stampImage, stampFileName, RasterImageFormat.Bmp, 24); 
         stampImage.Dispose(); 
      } 
      else 
         Debug.WriteLine("Stamp extension: Not found"); 
 
      if ((extensionList.Flags & CodecsExtensionListFlags.Audio) == CodecsExtensionListFlags.Audio) 
      { 
         Debug.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); 
               Debug.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); 
 
         Debug.WriteLine("{0} total audio streams found", streamIndex); 
      } 
      else 
         Debug.WriteLine("Audio extension: Not found"); 
 
      CodecsExtension[] extensions = extensionList.GetExtensions(); 
      Debug.WriteLine("Total number of extensions found in the file: {0}", extensions.Length); 
 
      for (int i = 0; i < extensions.Length; i++) 
      { 
         CodecsExtension extension = extensions[i]; 
         Debug.WriteLine(" {0}. Name: {1}, Clsid: {2}, UCDefault: {3}, DatLength: {4}", 
            i, extension.Name, extension.Clsid, extension.UCDefault, extension.DataLength); 
      } 
 
      // Finalize cannot be called directly, it is invoked automatically. 
      // To clean up before exiting, use Dispose 
      extensionList.Dispose(); 
   } 
   else 
      Debug.WriteLine("No extensions were found in the file"); 
 
   codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.5.5
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.