Packages

 

com.aspose.imaging.fileformats.emf

Class EmfImage

  • All Implemented Interfaces:
    IObjectWithBounds, com.aspose.ms.System.IDisposable, Closeable, AutoCloseable


    public final class EmfImage
    extends MetaImage

    EMF file format image.

    Code example:

    This example shows how to load a EMF image from a file and convert it to SVG using EmfRasterizationOptions.


    String dir = "c:\\temp\\";
    
    // Using Aspose.Imaging.Image.Load is a unified way to load all types of images including EMF.
    com.aspose.imaging.fileformats.emf.EmfImage emfImage = (com.aspose.imaging.fileformats.emf.EmfImage) com.aspose.imaging.Image.load(dir + "test.emf");
    try {
        com.aspose.imaging.imageoptions.SvgOptions saveOptions = new com.aspose.imaging.imageoptions.SvgOptions();
    
        // Text will be converted to shapes.
        saveOptions.setTextAsShapes(true);
    
        com.aspose.imaging.imageoptions.EmfRasterizationOptions rasterizationOptions = new com.aspose.imaging.imageoptions.EmfRasterizationOptions();
    
        // The background color of the drawing surface.
        rasterizationOptions.setBackgroundColor(com.aspose.imaging.Color.getWhiteSmoke());
    
        // The page size.
        rasterizationOptions.setPageSize(new com.aspose.imaging.SizeF(emfImage.getWidth(), emfImage.getHeight()));
    
        // If embedded emf exists, then render emf; otherwise render wmf.
        rasterizationOptions.setRenderMode(com.aspose.imaging.fileformats.emf.EmfRenderMode.Auto);
    
        // Set the horizontal margin
        rasterizationOptions.setBorderX(50);
    
        // Set the vertical margin
        rasterizationOptions.setBorderY(50);
    
        saveOptions.setVectorRasterizationOptions(rasterizationOptions);
    
        emfImage.save(dir + "test.output.svg", saveOptions);
    } finally {
        emfImage.dispose();
    }
    

    • Constructor Detail

      • EmfImage

        public EmfImage()

        Initializes a new instance of the EmfImage class.

    • Method Detail

      • setHeader

        public void setHeader(EmfMetafileHeader value)

        Gets or sets the header record

      • isCached

        public boolean isCached()

        Gets a value indicating whether object's data is cached currently and no data reading is required.

        Value: true if object's data is cached; otherwise, false.
        Specified by:
        isCached in class DataStreamSupporter
        Returns:
        true if object's data is cached; otherwise, false.
      • setRecords

        public void setRecords(MetaObjectList value)

        Gets or sets the records.

        Value: The records.
        Overrides:
        setRecords in class MetaImage
        Parameters:
        value - The records.
      • getFileFormat

        public long getFileFormat()

        Gets a value of file format

        Overrides:
        getFileFormat in class Image
      • getBitsPerPixel

        public int getBitsPerPixel()

        Gets the image bits per pixel count this parameter is not applicable to vector images

        Specified by:
        getBitsPerPixel in class Image
        Returns:
        The image bits per pixel count.
        Throws:
        com.aspose.ms.System.NotImplementedException - Not valid for vector images Value: The image bits per pixel count.
      • getWidth

        public int getWidth()

        Gets the image width.

        Value: The image width.
        Specified by:
        getWidth in interface IObjectWithBounds
        Specified by:
        getWidth in class Image
        Returns:
        The image width.
      • getHeight

        public int getHeight()

        Gets the image height.

        Value: The image height.
        Specified by:
        getHeight in interface IObjectWithBounds
        Specified by:
        getHeight in class Image
        Returns:
        The image height.
      • cacheData

        public void cacheData()

        Caches the data and ensures no additional data loading will be performed from the underlying DataStreamSupporter.DataStreamContainer.

        Specified by:
        cacheData in class DataStreamSupporter
        Code example:

        This example shows how to load a EMF image from a file and list all of its records.


        String dir = "c:\\temp\\";
        
        // Using Aspose.Imaging.Image.Load is a unified way to load all types of images including WMF.
        com.aspose.imaging.fileformats.emf.EmfImage emfImage = (com.aspose.imaging.fileformats.emf.EmfImage)com.aspose.imaging.Image.load(dir + "test.emf");
        try
        {
            // Cache data to load all records.
            emfImage.cacheData();
            System.out.println("The total number of records: " + emfImage.getRecords().size());
        
            // The key is a record type, the value is number of records of that type in the WMF image.
            java.util.HashMap<Class, Integer> types =
                    new java.util.HashMap<>();
        
            // Gather statistics
            for (Object obj : emfImage.getRecords())
            {
                com.aspose.imaging.fileformats.emf.emf.records.EmfRecord record = (com.aspose.imaging.fileformats.emf.emf.records.EmfRecord) obj;
        
                Class objType = record.getClass();
                if (!types.containsKey(objType))
                {
                    types.put(objType, 1);
                }
                else
                {
                    int n = types.get(objType);
                    types.put(objType, n + 1);
                }
            }
        
            // Print statistics
            System.out.println("Record Type                              Count");
            System.out.println("----------------------------------------------");
            for (java.util.Map.Entry<Class, Integer> entry : types.entrySet())
            {
                String objectType = entry.getKey().getSimpleName();
                int numberOfEntrances = entry.getValue();
        
                // Align output with spaces
                int alignmentPos = 40;
                char[] chars = new char[alignmentPos - objectType.length()];
                java.util.Arrays.fill(chars, ' ');
                String gap = new String(chars);
        
                System.out.println(objectType + ":" + gap + numberOfEntrances);
            }
        } finally {
            emfImage.dispose();
        }
        
        //The output may look like this:
        //The total number of records: 1188
        //Record Type                              Count
        //----------------------------------------------
        //EmfMetafileHeader:                       1
        //EmfSetBkMode:                            1
        //EmfSetTextAlign:                         1
        //EmfSetRop2:                              1
        //EmfSetWorldTransform:                    1
        //EmfExtSelectClipRgn:                     1
        //EmfCreateBrushIndirect:                  113
        //EmfSelectObject:                         240
        //EmfCreatePen:                            116
        //EmfSetPolyFillMode:                      1
        //EmfBeginPath:                            120
        //EmfMoveToEx:                             122
        //EmfPolyBezierTo16:                       36
        //EmfLineTo:                               172
        //EmfCloseFigure:                          14
        //EmfEndPath:                              120
        //EmfStrokeAndFillPath:                    113
        //EmfStrokePath:                           7
        //EmfSetTextColor:                         2
        //EmfExtCreateFontIndirectW:               2
        //EmfExtTextOutW:                          2
        //EmfStretchBlt:                           1
        //EmfEof:                                  1
        

      • crop

        public void crop(Rectangle rectangle)

        Crops the specified rectangle.

        Overrides:
        crop in class MetaImage
        Parameters:
        rectangle - The rectangle.
      • resizeCanvas

        public void resizeCanvas(Rectangle newRectangle)

        Resizes the canvas.

        Specified by:
        resizeCanvas in class MetaImage
        Parameters:
        newRectangle - The new rectangle.
      • resize

        public void resize(int newWidth,
                           int newHeight,
                           int resizeType)

        Resizes the image.

        Specified by:
        resize in class Image
        Parameters:
        newWidth - The new width.
        newHeight - The new height.
        resizeType - The resize type.
        Throws:
        com.aspose.ms.System.NotImplementedException - Not implemented.
        com.aspose.ms.System.NotImplementedException - Not implemented.
      • resize

        public void resize(int newWidth,
                           int newHeight,
                           ImageResizeSettings settings)

        Resizes the image.

        Specified by:
        resize in class Image
        Parameters:
        newWidth - The new width.
        newHeight - The new height.
        settings - The resize settings.
        Throws:
        com.aspose.ms.System.NotImplementedException - Not implemented.
      • rotateFlip

        public void rotateFlip(int rotateFlipType)

        Rotates, flips, or rotates and flips the image.

        Specified by:
        rotateFlip in class Image
        Parameters:
        rotateFlipType - Type of the rotate flip.
        Throws:
        com.aspose.ms.System.NotImplementedException - Not implemented.
      • setPalette

        public void setPalette(IColorPalette palette,
                               boolean updateColors)

        Sets the image palette.

        Specified by:
        setPalette in class Image
        Parameters:
        palette - The palette to set.
        updateColors - if set to true colors will be updated according to the new palette; otherwise color indexes remain unchanged. Note that unchanged indexes may crash the image on loading if some indexes have no corresponding palette entries.
        Throws:
        com.aspose.ms.System.NotImplementedException - Not valid for vector images