public static bool FormatSupportsMultipageSave(RasterImageFormat format)
public:static bool FormatSupportsMultipageSave(RasterImageFormat format)
def FormatSupportsMultipageSave(self,format):
format
Format to check.
true if the image file format specified by format supports multipage save operations.
This example will try to save a multipage file to disk, if the format supports multipage files, then it will create a single output file, otherwise, multiple files (for each page) will be created.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Color;using Leadtools.Svg;private static void SaveMultiPageFile(RasterCodecs rasterCodecs, RasterImage multiPageImage, string outputFile, RasterImageFormat format){// Check if the image has multi-ple pages and the format supports multi-pageif (multiPageImage.PageCount > 1 && RasterCodecs.FormatSupportsMultipageSave(format)){// Yes, just save the filerasterCodecs.Save(multiPageImage, outputFile, format, 0, 1, -1, 1, CodecsSavePageMode.Overwrite);}else{// No, we need to save each page in a separate fileint originalPageNumber = multiPageImage.Page;for (int pageNumber = 1; pageNumber <= multiPageImage.PageCount; pageNumber++){// Get the new file namestring name = Path.GetFileNameWithoutExtension(outputFile) + "_page" + pageNumber.ToString();name = Path.ChangeExtension(name, Path.GetExtension(outputFile));string pageFile = Path.Combine(Path.GetDirectoryName(outputFile), name);// Save this pagemultiPageImage.Page = pageNumber;rasterCodecs.Save(multiPageImage, pageFile, format, 0);}multiPageImage.Page = originalPageNumber;}}public void FormatSupportsMultipageSaveExample(){string inDir = LEAD_VARS.ImagesDir;string outDir = Path.Combine(inDir, @"FormatSupportsMultipageSave");if (!Directory.Exists(outDir))Directory.CreateDirectory(outDir);using (RasterCodecs rasterCodecs = new RasterCodecs()){// Create a multi-page imageusing (RasterImage multiPageImage = GetMultipageImage(rasterCodecs, inDir)){// Save the image as TIF, this should create a single fileSaveMultiPageFile(rasterCodecs, multiPageImage, Path.Combine(outDir, "out.tif"), RasterImageFormat.Tif);// Save the image as PNG, this should create multiple files (one for each page)SaveMultiPageFile(rasterCodecs, multiPageImage, Path.Combine(outDir, "out.png"), RasterImageFormat.Png);}}}private static RasterImage GetMultipageImage(RasterCodecs rasterCodecs, string inDir){// Create a multi-page image from some known LEADTOOLS imagesRasterImage multiPageImage = null;for (int imageNumber = 1; imageNumber <= 4; imageNumber++){string fileName = Path.Combine(inDir, "Ocr" + imageNumber.ToString() + ".tif");RasterImage pageImage = rasterCodecs.Load(fileName, 1);if (multiPageImage == null){multiPageImage = pageImage;}else{multiPageImage.AddPage(pageImage);pageImage.Dispose();}}return multiPageImage;}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.*;private void saveMultiPageFile(RasterCodecs rasterCodecs, RasterImage multiPageImage, String outputFile,RasterImageFormat format) throws IOException {// Check that the output file existsFile outDirFile = new File(outputFile);if (!outDirFile.exists())outDirFile.createNewFile();// Check if the image has multi-ple pages and the format supports multi-pageif (multiPageImage.getPageCount() > 1 && RasterCodecs.formatSupportsMultipageSave(format)) {// Yes, just save the filerasterCodecs.save(multiPageImage, outputFile, format, 0, 1, -1, 1, CodecsSavePageMode.OVERWRITE);} else {// No, we need to save each page in a separate fileint originalPageNumber = multiPageImage.getPage();for (int pageNumber = 1; pageNumber <= multiPageImage.getPageCount(); pageNumber++) {// Get the new file nameString fileWithoutExtension = outputFile.substring(0, outputFile.indexOf("."));String name = fileWithoutExtension + "_page" + pageNumber;String outputFileExtension = outputFile.substring(outputFile.indexOf("."));name = name + outputFileExtension;// Save this pagemultiPageImage.setPage(pageNumber);rasterCodecs.save(multiPageImage, name, format, 0);}multiPageImage.setPage(originalPageNumber);}}public void formatSupportsMultipageSaveExample() throws IOException {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";RasterCodecs rasterCodecs = new RasterCodecs();// Create a multi-page imageRasterImage multiPageImage = getMultipageImage(rasterCodecs, LEAD_VARS_IMAGES_DIR);// Save the image as TIF, this should create a single filesaveMultiPageFile(rasterCodecs,multiPageImage,combine(LEAD_VARS_IMAGES_DIR, "out.tif"),RasterImageFormat.TIF);assertTrue("file unsuccessfully saved",(new File(combine(LEAD_VARS_IMAGES_DIR, "out.tif"))).exists());// Save the image as PNG, this should create multiple files (one for each page)saveMultiPageFile(rasterCodecs,multiPageImage,combine(LEAD_VARS_IMAGES_DIR, "out.png"),RasterImageFormat.PNG);assertTrue("file unsuccessfully saved",(new File(combine(LEAD_VARS_IMAGES_DIR, "out.png"))).exists());}private RasterImage getMultipageImage(RasterCodecs rasterCodecs, String inDir) {// Create a multi-page image from some known LEADTOOLS imagesRasterImage multiPageImage = null;for (int imageNumber = 1; imageNumber <= 4; imageNumber++) {String fileName = combine(inDir, "Ocr" + imageNumber + ".tif");RasterImage pageImage = rasterCodecs.load(fileName, 1);if (multiPageImage == null) {multiPageImage = pageImage;} else {multiPageImage.addPage(pageImage);pageImage.dispose();}}return multiPageImage;}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
