←Select platform

CloneAll Method

Summary
Creates an exact copy of this RasterImage.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public RasterImage CloneAll() 
- (nullable LTRasterImage *)cloneAll:(NSError **)error 
public RasterImage cloneAll(); 
public: 
RasterImage^ CloneAll();  
def CloneAll(self): 

Return Value

The RasterImage this method creates.

Remarks

You can also use the RasterImage(RasterImage) constructor to create an exact copy of an existing RasterImage.

To create a copy of an object while maintaining a progress status, refer to the CloneCommand.

This method copies all the pages and any metadata contained in the RasterImage. To create a copy of only the current active page (no metadata information), use the Clone method.

To clone an image with support for a progress event, refer to CloneCommand.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Dicom; 
using Leadtools.Drawing; 
using Leadtools.Controls; 
using Leadtools.Svg; 
 
 
public void CloneExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "eye.gif"); 
 
   // Load the multi-page image 
   RasterImage srcImage = codecs.Load(srcFileName); 
   Console.WriteLine("Pages in source image: {0}", srcImage.PageCount); 
 
   // Use the Clone method to clone this image 
   // Notice, this method only clones the current active page only 
   RasterImage destImage1 = srcImage.Clone(); 
   Console.WriteLine("Pages in image created with Clone: {0}", destImage1.PageCount); 
   Assert.IsTrue(destImage1.PageCount == 1); 
 
   // Use the Clone rectangle method to clone this image 
   // Notice, this method also clones the current active page only 
   LeadRect rc = new LeadRect(0, 0, srcImage.Width / 2, srcImage.Height / 2); 
   Console.WriteLine("Cloning with a rectangle = {0}", rc.ToString()); 
   RasterImage destImage2 = srcImage.Clone(rc); 
   Console.WriteLine("Pages in image created with Clone(LeadRect): {0}", destImage2.PageCount); 
   Console.WriteLine("Image created with Clone(LeadRect) size = {0} by {1}", destImage2.Width, destImage2.Height); 
   Assert.IsTrue(destImage2.PageCount == 1); 
   Assert.IsTrue(destImage2.Width == srcImage.Width / 2); 
   Assert.IsTrue(destImage2.Height == srcImage.Height / 2); 
 
   // Use the CloneAll method, this should create a copy 
   // of all the pages 
   RasterImage destImage3 = srcImage.CloneAll(); 
   Console.WriteLine("Pages in image created with CloneAll: {0}", destImage3.PageCount); 
   Assert.IsTrue(destImage3.PageCount == srcImage.PageCount); 
 
   // Use the CloneCommand, this allows you to have a progress 
   // bar as well as control the memory flags, here 
   // we will create a destination image using disk memory. 
   CloneCommand cloneCmd = new CloneCommand(); 
   cloneCmd.Progress += new EventHandler<RasterCommandProgressEventArgs>(cloneCmd_Progress); 
   cloneCmd.CreateFlags = RasterMemoryFlags.Disk; 
   cloneCmd.Run(srcImage); 
   cloneCmd.Progress -= new EventHandler<RasterCommandProgressEventArgs>(cloneCmd_Progress); 
 
   RasterImage destImage4 = cloneCmd.DestinationImage; 
   Console.WriteLine("Pages in image created with CloneCommand: {0}", destImage4.PageCount); 
   Console.WriteLine("Disk memory model of image created with CloneCommand: {0}", destImage4.IsDiskMemory); 
   Assert.IsTrue(destImage4.PageCount == 1); 
   Assert.IsTrue(destImage4.IsDiskMemory); 
 
   // Clean up 
   destImage4.Dispose(); 
   destImage3.Dispose(); 
   destImage2.Dispose(); 
   destImage1.Dispose(); 
   srcImage.Dispose(); 
   codecs.Dispose(); 
} 
 
void cloneCmd_Progress(object sender, RasterCommandProgressEventArgs e) 
{ 
   if (e.Percent == 0) 
      Console.WriteLine("Clone progress started"); 
   if (e.Percent == 100) 
      Console.WriteLine("Clone progress ended"); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
 
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.imageprocessing.core.*; 
import leadtools.svg.*; 
import leadtools.imageprocessing.CloneCommand; 
import leadtools.imageprocessing.FillCommand; 
import leadtools.imageprocessing.FlipCommand; 
import leadtools.imageprocessing.GrayscaleCommand; 
import leadtools.imageprocessing.color.InvertCommand; 
import leadtools.imageprocessing.color.PosterizeCommand; 
 
 
public void cloneExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterCodecs codecs = new RasterCodecs(); 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "eye.gif"); 
 
   // Load the multi-page image 
   RasterImage srcImage = codecs.load(srcFileName); 
   System.out.printf("Pages in source image: %s%n", srcImage.getPageCount()); 
 
   // Use the Clone method to clone this image 
   // Notice, this method only clones the current active page only 
   RasterImage destImage1 = srcImage.clone(); 
   System.out.printf("Pages in image created with Clone: %s%n", destImage1.getPageCount()); 
 
   assertTrue(destImage1.getPageCount() == 1); 
 
   // Use the Clone rectangle method to clone this image 
   // Notice, this method also clones the current active page only 
   LeadRect rc = new LeadRect(0, 0, srcImage.getWidth() / 2, srcImage.getHeight() / 2); 
   System.out.printf("Cloning with a rectangle = %s%n", rc.toString()); 
   RasterImage destImage2 = srcImage.clone(rc); 
   System.out.printf("Pages in image created with Clone(LeadRect): %s%n", destImage2.getPageCount()); 
   System.out.printf("Image created with Clone(LeadRect) size = %1s by %2s%n", destImage2.getWidth(), 
         destImage2.getHeight()); 
 
   assertTrue(destImage2.getPageCount() == 1); 
   assertTrue(destImage2.getWidth() == srcImage.getWidth() / 2); 
   assertTrue(destImage2.getHeight() == srcImage.getHeight() / 2); 
 
   // Use the CloneAll method, this should create a copy 
   // of all the pages 
   RasterImage destImage3 = srcImage.cloneAll(); 
   System.out.printf("Pages in image created with CloneAll: %s%n", destImage3.getPageCount()); 
 
   assertTrue(destImage3.getPageCount() == srcImage.getPageCount()); 
 
   // Use the CloneCommand, this allows you to have a progress 
   // bar as well as control the memory flags, here 
   // we will create a destination image using disk memory. 
   CloneCommand cloneCmd = new CloneCommand(); 
   cloneCmd.addProgressListener(cloneCmd_Progress); 
   cloneCmd.setCreateFlags(RasterMemoryFlags.DISK.getValue()); 
   cloneCmd.run(srcImage); 
   cloneCmd.removeProgressListener(cloneCmd_Progress); 
 
   RasterImage destImage4 = cloneCmd.getDestinationImage(); 
   System.out.printf("Pages in image created with CloneCommand: %s%n", destImage4.getPageCount()); 
   System.out.printf("Disk memory model of image created with CloneCommand: %s%n", destImage4.isDiskMemory()); 
 
   assertTrue(destImage4.getPageCount() == 1); 
   assertTrue(destImage4.isDiskMemory()); 
 
   // Save it 
   codecs.save(srcImage, combine(LEAD_VARS_IMAGES_DIR, "Result.gif"), RasterImageFormat.GIF, 0); 
 
   // Clean up 
   destImage4.dispose(); 
   destImage3.dispose(); 
   destImage2.dispose(); 
   destImage1.dispose(); 
   srcImage.dispose(); 
   codecs.dispose(); 
 
   assertTrue("file unsuccessfully saved to " + combine(LEAD_VARS_IMAGES_DIR, "Result.gif"), 
         (new File(combine(LEAD_VARS_IMAGES_DIR, "Result.gif"))).exists()); 
   System.out.printf("File saved successfully to %s%n", combine(LEAD_VARS_IMAGES_DIR, "Result.gif")); 
} 
 
RasterImageProgressListener cloneCmd_Progress = new RasterImageProgressListener() { 
 
   @Override 
   public void RasterImageProgressAlert(RasterImageProgressEvent arg0) { 
      if (arg0.getPercentComplete() == 0) { 
         System.out.println("Clone progress started"); 
      } 
      if (arg0.getPercentComplete() == 100) { 
         System.out.println("Clone progress ended"); 
      } 
   } 
 
}; 
Requirements

Target Platforms

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

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