←Select platform

FirstPage Property

Summary
Gets the index of the first page being saved.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public int FirstPage { get; } 
@property (nonatomic, assign, readonly) NSInteger firstPage; 
public int getFirstPage() 
public: 
property int FirstPage { 
   int get(); 
} 
FirstPage # get  (CodecsSaveImageEventArgs) 

Property Value

The 1-based index of the first page being saved. The default value is 0.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
public void SaveImageExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
   string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_SaveImage.cmp"); 
 
   // Load the source file (make sure to load as 24 bits/pixel) 
   RasterImage image = codecs.Load(srcFileName, 24, CodecsLoadByteOrder.Bgr, 1, 1); 
 
   // Instruct RasterCodecs to generate the saved scanlines data for us to manipulate 
   codecs.Options.Save.RetrieveDataFromImage = true; 
 
   // Add a handler to the SaveImage event 
   codecs.SaveImage += new EventHandler<CodecsSaveImageEventArgs>(codecs_SaveImage); 
 
   // Save the image 
   codecs.Save(image, destFileName, RasterImageFormat.Cmp, 24); 
 
   codecs.SaveImage -= new EventHandler<CodecsSaveImageEventArgs>(codecs_SaveImage); 
 
   image.Dispose(); 
 
   // Clean up 
   codecs.Dispose(); 
} 
 
private void codecs_SaveImage(object sender, CodecsSaveImageEventArgs e) 
{ 
   // This example works with images saved as 24-bit per pixel only 
   Debug.Assert(e.Image.BitsPerPixel == 24); 
   e.Cancel = false; 
 
   if (e.Row == 0) 
   { 
      // Show information about the image being saved 
      Debug.WriteLine("Saving an image with {0} bpp to {1}", e.Image.BitsPerPixel, e.FileName); 
      Debug.WriteLine("Offset: {0}, OffsetValid: {1}", e.Offset, e.OffsetValid); 
      Debug.WriteLine("Page: {0} of {1}", e.Page, e.LastPage - e.FirstPage + 1); 
      Debug.WriteLine("Page percent: {0}%, Total percent: {1}%, Image Page: {2}", e.PagePercent, e.TotalPercent, e.ImagePage); 
 
      if (e.Stream != null) 
      { 
         Debug.WriteLine("Stream: {0}", e.Stream); 
      } 
   } 
 
   Debug.WriteLine("Row: {0}, Lines {1}", e.Row, e.Lines); 
 
   // Get the scanlines from the image 
   int scanlineLength = e.Image.BytesPerLine; 
   byte[] scanline = new byte[scanlineLength]; 
 
   // Loop through all the scanlines in the data 
   for (int y = 0; y < e.Lines; y++) 
   { 
      // Get this row 
      e.Buffer.GetData(y * scanlineLength, scanline, 0, scanlineLength); 
 
      // We got the data, now double the intensity 
      // Remember, this is 24-bits/pixel 
      for (int x = 0; x < scanlineLength; x++) 
      { 
         scanline[x] *= 2; 
      } 
 
      // Copy it back to the event buffer 
      e.Buffer.SetData(y * scanlineLength, scanline, 0, scanlineLength); 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.*; 
import java.net.*; 
import java.nio.file.Paths; 
import java.util.*; 
import java.time.Instant; 
import java.time.Duration; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.codecs.RasterCodecs.FeedCallbackThunk; 
import leadtools.drawing.internal.*; 
import leadtools.imageprocessing.*; 
import leadtools.imageprocessing.color.ChangeIntensityCommand; 
import leadtools.svg.*; 
 
 
public void saveImageExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterCodecs codecs = new RasterCodecs(); 
 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp"); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image2.cmp"); 
 
   // Load the source file (make sure to load as 24 bits/pixel) 
   RasterImage image = codecs.load(srcFileName, 24, CodecsLoadByteOrder.BGR, 1, 1); 
 
   // Instruct RasterCodecs to generate the saved scanlines data for us to 
   // manipulate 
   codecs.getOptions().getSave().setRetrieveDataFromImage(true); 
 
   // Add a handler to the SaveImage event 
   codecs.addSaveImageListener(codecsSaveImage); 
   // Save the image 
   codecs.save(image, destFileName, RasterImageFormat.CMP, 24); 
 
   assertTrue("File unsuccessfully saved to" + destFileName, (new File(destFileName)).exists()); 
   System.out.println("File is saved to" + destFileName); 
 
   // Clean up 
   codecs.removeSaveImageListener(codecsSaveImage); 
   image.dispose(); 
   codecs.dispose(); 
} 
 
CodecsSaveImageListener codecsSaveImage = new CodecsSaveImageListener() { 
 
   @Override 
   public void onSaveImage(CodecsSaveImageEvent e) { 
      // This example works with images saved as 24-bit per pixel only 
      assertTrue(e.getImage().getBitsPerPixel() == 24); 
      e.setCancel(false); 
 
      if (e.getRow() == 0) { 
         // Show information about the image being saved 
         System.out.println("Saving an image with " + e.getImage().getBitsPerPixel() + " bpp"); 
         System.out.println("Page: " + e.getPage() + " of " + (e.getLastPage() - e.getFirstPage() + 1)); 
         System.out.println("Page percent: " + e.getPagePercent() + "%, Total percent: " + e.getTotalPercent() 
               + "%, Image Page: " + e.getImagePage()); 
 
         if (e.getStream() != null) { 
            System.out.println("Stream: " + e.getStream()); 
         } 
 
      } 
 
      System.out.println("Row: " + e.getRow() + ", Lines " + e.getLines()); 
 
      // Get the scanlines from the image 
      int scanlineLength = e.getImage().getBytesPerLine(); 
      byte[] scanline = new byte[scanlineLength]; 
 
      // Loop through all the scanlines in the data 
      for (int y = 0; y < e.getLines(); y++) { 
         // Get this row 
         e.getBuffer().getData(y * scanlineLength, scanline, 0, scanlineLength); 
 
         // We got the data, now double the intensity 
         // Remember, this is 24-bits/pixel 
         for (int x = 0; x < scanlineLength; x++) { 
            scanline[x] *= 2; 
         } 
 
         // Copy it back to the event buffer 
         e.getBuffer().setData(y * scanlineLength, scanline, 0, scanlineLength); 
      } 
   } 
 
}; 
Requirements

Target Platforms

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

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