Packages

 

com.aspose.imaging.fileformats.webp

Class WebPImage

  • All Implemented Interfaces:
    IMultipageImage, IObjectWithBounds, IRasterImageArgb32PixelLoader, IRasterImageRawDataLoader, com.aspose.imaging_internal.IPixelsSaver, com.aspose.imaging_internal.progressmanagement.IProgressEventHandler, com.aspose.imaging_internal.progressmanagement.IProgressInformer, com.aspose.ms.System.IDisposable, Closeable, AutoCloseable


    public final class WebPImage
    extends RasterCachedMultipageImage

    A webp image.

    Code example:

    This example shows how to load a WebP image from a file and save it to PNG.


    String dir = "c:\\temp\\";
    
    // Load a WebP image from a file.
    com.aspose.imaging.fileformats.webp.WebPImage webPImage = new com.aspose.imaging.fileformats.webp.WebPImage(dir + "test.webp");
    try {
        // Save to PNG
        // Note that only the active frame will be stored to PNG, since PNG is not a multi-page format.
        webPImage.save(dir + "test.output.png", new com.aspose.imaging.imageoptions.PngOptions());
    } finally {
        webPImage.dispose();
    }
    

    • Constructor Detail

      • WebPImage

        public WebPImage(InputStream stream)

        Initializes a new instance of the WebPImage class from stream.

        Parameters:
        stream - The stream WebP image.
        Code example:

        This example shows how to load a WebP image from a file stream and save it to PNG.


        String dir = "c:\\temp\\";
        
        // Load a WebP image from a file stream.
        java.io.InputStream stream = new java.io.FileInputStream(dir + "test.webp");
        com.aspose.imaging.fileformats.webp.WebPImage webPImage = new com.aspose.imaging.fileformats.webp.WebPImage(stream);
        try {
            // Save to PNG
            // Note that only the active frame will be stored to PNG, since PNG is not a multi-page format.
            webPImage.save(dir + "test.output.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            webPImage.dispose();
        }
        

      • WebPImage

        public WebPImage(InputStream stream,
                         LoadOptions loadOptions)

        Initializes a new instance of the WebPImage class from stream.

        Parameters:
        stream - The stream WebP image.
        loadOptions - The load options.
      • WebPImage

        public WebPImage(String path)

        Initializes a new instance of the WebPImage class from file.

        Parameters:
        path - The path to file WebP Image
        Code example:

        This example shows how to load a WebP image from a file and save it to PNG.


        String dir = "c:\\temp\\";
        
        // Load a WebP image from a file.
        com.aspose.imaging.fileformats.webp.WebPImage webPImage = new com.aspose.imaging.fileformats.webp.WebPImage(dir + "test.webp");
        try {
            // Save to PNG
            // Note that only the active frame will be stored to PNG, since PNG is not a multi-page format.
            webPImage.save(dir + "test.output.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            webPImage.dispose();
        }
        

      • WebPImage

        public WebPImage(String path,
                         LoadOptions loadOptions)

        Initializes a new instance of the WebPImage class from file.

        Parameters:
        path - The path to file WebP Image
        loadOptions - The load options.
      • WebPImage

        public WebPImage(RasterImage rasterImage)

        Initializes a new instance of the WebPImage class from rasterImage.

        Parameters:
        rasterImage - The raster image.
        Code example:

        This example shows how to create a WebP image from another raster image.


        String dir = "c:\\temp\\";
        
        // Load a PNG image of 100x100 px.
        com.aspose.imaging.fileformats.png.PngImage pngImage = new com.aspose.imaging.fileformats.png.PngImage(100, 100);
        try {
            com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(pngImage);
        
            // Fill the entire image in red.
            com.aspose.imaging.brushes.SolidBrush brush = new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getRed());
            graphics.fillRectangle(brush, pngImage.getBounds());
        
            // Create a WebP image based on the PNG image.
            com.aspose.imaging.fileformats.webp.WebPImage webPImage = new com.aspose.imaging.fileformats.webp.WebPImage(pngImage);
            try {
                // Save to a WebP file with default options
                webPImage.save(dir + "output.webp", new com.aspose.imaging.imageoptions.WebPOptions());
            } finally {
                webPImage.dispose();
            }
        } finally {
            pngImage.dispose();
        }
        

      • WebPImage

        public WebPImage(RasterImage rasterImage,
                         LoadOptions loadOptions)

        Initializes a new instance of the WebPImage class from rasterImage.

        Parameters:
        rasterImage - The raster image.
        loadOptions - The load options.
      • WebPImage

        public WebPImage(int width,
                         int height,
                         WebPOptions options)

        Initializes a new instance of the WebPImage class with empty image.

        Parameters:
        width - The image width
        height - The image height.
        options - The options.
        Code example:

        This example shows how to create a WebP image with the specified options from scratch.


        String dir = "c:\\temp\\";
        
        com.aspose.imaging.imageoptions.WebPOptions createOptions = new com.aspose.imaging.imageoptions.WebPOptions();
        createOptions.setLossless(true);
        createOptions.setQuality(100f);
        //createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource(dir + "output.webp");
        
        // Create a WebP image of 100x100 px.
        com.aspose.imaging.fileformats.webp.WebPImage webPImage = new com.aspose.imaging.fileformats.webp.WebPImage(100, 100, createOptions);
        try {
            com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(webPImage);
        
            // Fill the entire image in red.
            com.aspose.imaging.brushes.SolidBrush brush = new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getRed());
            graphics.fillRectangle(brush, webPImage.getBounds());
        
            // Save to a WebP file
            webPImage.save(dir + "output.webp");
        } finally {
            webPImage.dispose();
        }
        

      • WebPImage

        public WebPImage(int width,
                         int height,
                         WebPOptions options,
                         LoadOptions loadOptions)

        Initializes a new instance of the WebPImage class with empty image.

        Parameters:
        width - The image width
        height - The image height.
        options - The options.
        loadOptions - The load options.
    • Method Detail

      • getOptions

        public final WebPOptions getOptions()

        Gets the options.

        Value: The options.
        Returns:
        the options.
      • getFileFormat

        public long getFileFormat()

        Gets a value of file format

        Overrides:
        getFileFormat in class Image
        Returns:
        a value of file format
      • hasAlpha

        public boolean hasAlpha()

        Gets the Has alpha channel.

        Value: The Has alpha channel. <autogeneratedoc></autogeneratedoc>
        Overrides:
        hasAlpha in class RasterCachedMultipageImage
        Returns:
        the Has alpha channel.
        Code example:

        The following example loads a WEBP image and prints information about raw data format and alpha channel.


        String dir = "c:\\temp\\";
        String fileName = dir + "sample.webp";
        com.aspose.imaging.Image image = com.aspose.imaging.Image.load(fileName);
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // If the active TIFF frame has alpha channel, then the entire TIFF image is considered to have alpha channel.
            System.out.printf("ImageFile=%s, FileFormat=%s, HasAlpha=%s\r\n", fileName, webpImage.getRawDataFormat(), webpImage.hasAlpha());
        
            int i = 0;
            for (com.aspose.imaging.fileformats.webp.IFrame frame : webpImage.getBlocks()) {
                if (frame instanceof com.aspose.imaging.fileformats.webp.WebPFrameBlock) {
                    com.aspose.imaging.fileformats.webp.WebPFrameBlock frameBlock = (com.aspose.imaging.fileformats.webp.WebPFrameBlock) frame;
                    System.out.printf("Frame=%s, FileFormat=%s, HasAlpha=%s\r\n", i++, frameBlock.getRawDataFormat(), frameBlock.hasAlpha());
                }
            }
        } finally {
            image.dispose();
        }
        
        // The output may look like this:
        // ImageFile=c:\temp\sample.webp, FileFormat=RgbIndexed1Bpp, used channels: 1, HasAlpha=False
        // Frame=0, FileFormat=RgbIndexed1Bpp, used channels: 1, HasAlpha=False
        

      • addBlock

        public final void addBlock(IFrame block)

        Adds a new Webp block.

        Parameters:
        block - The Webp block to add.
        Code example:

        This example shows how to create a multi-frame animated WebP image with the specified options.


        String dir = "c:\\temp\\";
        
        com.aspose.imaging.imageoptions.WebPOptions createOptions = new com.aspose.imaging.imageoptions.WebPOptions();
        createOptions.setLossless(true);
        createOptions.setQuality(100f);
        createOptions.setAnimBackgroundColor((long) com.aspose.imaging.Color.getGray().toArgb());
        
        // The default frame plus 36 + 36 additional frames.
        createOptions.setAnimLoopCount(36 + 36 + 1);
        
        // Create a WebP image of 100x100 px.
        com.aspose.imaging.fileformats.webp.WebPImage webPImage = new com.aspose.imaging.fileformats.webp.WebPImage(100, 100, createOptions);
        try {
            // The first circle is red
            com.aspose.imaging.brushes.SolidBrush brush1 = new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getRed());
        
            // The second circle is black
            com.aspose.imaging.brushes.SolidBrush brush2 = new com.aspose.imaging.brushes.SolidBrush(com.aspose.imaging.Color.getBlack());
        
            // Gradually increase the angle of the red arc shape.
            for (int angle = 10; angle <= 360; angle += 10) {
                com.aspose.imaging.fileformats.webp.WebPFrameBlock block = new com.aspose.imaging.fileformats.webp.WebPFrameBlock(100, 100);
                com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(block);
                graphics.fillPie(brush1, block.getBounds(), 0, angle);
        
                webPImage.addBlock(block);
            }
        
            // Gradually increase the angle of the black arc and wipe out the red arc.
            for (int angle = 10; angle <= 360; angle += 10) {
                com.aspose.imaging.fileformats.webp.WebPFrameBlock block = new com.aspose.imaging.fileformats.webp.WebPFrameBlock(100, 100);
        
                com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(block);
                graphics.fillPie(brush2, block.getBounds(), 0, angle);
                graphics.fillPie(brush1, block.getBounds(), angle, 360 - angle);
        
                webPImage.addBlock(block);
            }
        
            // Save to a WebP file
            webPImage.save(dir + "output.webp");
        } finally {
            webPImage.dispose();
        }
        

      • clearBlocks

        public final void clearBlocks()

        Clears all the Webp blocks.

      • insertBlock

        public final void insertBlock(int index,
                                      IFrame block)

        Adds a new Webp block.

        Parameters:
        index - The zero-based element, at which block will be inserted.
        block - The Webp block to add.
      • removeBlock

        public final void removeBlock(IFrame block)

        Removes the Webp block.

        Parameters:
        block - The block to remove.


        Note: do not forget to Dispose the block if you will not add it to some other WebPImage.
      • rotate

        public void rotate(float angle,
                           boolean resizeProportionally,
                           Color backgroundColor)

        !:RasterCahcedMultipageImage.Rotate image around the center.

        Overrides:
        rotate in class RasterCachedMultipageImage
        Parameters:
        angle - The rotate angle in degrees. Positive values will rotate clockwise.
        resizeProportionally - if set to true you will have your image size changed according to rotated rectangle (corner points) projections in other case that leaves dimensions untouched and only image contents are rotated.
        backgroundColor - Color of the background.
      • resize

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

        Resizes the image.

        Overrides:
        resize in class RasterCachedMultipageImage
        Parameters:
        newWidth - The new width.
        newHeight - The new height.
        resizeType - The resize type.
        Code example:

        This example loads a WEBP image and resizes it using various resizing methods.


        String dir = "c:\\temp\\";
        
        com.aspose.imaging.fileformats.webp.WebPImage image = (com.aspose.imaging.fileformats.webp.WebPImage) com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            // Scale up by 2 times using Nearest Neighbour resampling.
            image.resize(image.getWidth() * 2, image.getHeight() * 2, com.aspose.imaging.ResizeType.NearestNeighbourResample);
        
            // Save to PNG with default options.
            image.save(dir + "upsample.nearestneighbour.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = (com.aspose.imaging.fileformats.webp.WebPImage) com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            // Scale down by 2 times using Nearest Neighbour resampling.
            image.resize(image.getWidth() / 2, image.getHeight() / 2, com.aspose.imaging.ResizeType.NearestNeighbourResample);
        
            // Save to PNG with default options.
            image.save(dir + "downsample.nearestneighbour.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = (com.aspose.imaging.fileformats.webp.WebPImage) com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            // Scale up by 2 times using Bilinear resampling.
            image.resize(image.getWidth() * 2, image.getHeight() * 2, com.aspose.imaging.ResizeType.BilinearResample);
        
            // Save to PNG with default options.
            image.save(dir + "upsample.bilinear.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = (com.aspose.imaging.fileformats.webp.WebPImage) com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            // Scale down by 2 times using Bilinear resampling.
            image.resize(image.getWidth() / 2, image.getHeight() / 2, com.aspose.imaging.ResizeType.BilinearResample);
        
            // Save to PNG with default options.
            image.save(dir + "downsample.bilinear.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        

      • resizeWidthProportionally

        public void resizeWidthProportionally(int newWidth,
                                              int resizeType)

        Resizes the width proportionally.

        Overrides:
        resizeWidthProportionally in class RasterCachedMultipageImage
        Parameters:
        newWidth - The new width.
        resizeType - Type of the resize.
      • resizeHeightProportionally

        public void resizeHeightProportionally(int newHeight,
                                               int resizeType)

        Resizes the width proportionally.

        Overrides:
        resizeHeightProportionally in class RasterCachedMultipageImage
        Parameters:
        newHeight - The new height.
        resizeType - Type of the resize.
      • rotateFlip

        public void rotateFlip(int rotateFlipType)

        Rotates, flips, or rotates and flips the Active frame only.

        Overrides:
        rotateFlip in class RasterCachedMultipageImage
        Parameters:
        rotateFlipType - The rotate flip type.
        See Also:
        RotateFlipType
      • dither

        public void dither(int ditheringMethod,
                           int bitsCount,
                           IColorPalette customPalette)

        Performs dithering on the current image.

        Overrides:
        dither in class RasterCachedMultipageImage
        Parameters:
        ditheringMethod - The dithering method.
        bitsCount - The final bits count for dithering.
        customPalette - The custom palette for dithering.
      • crop

        public void crop(int leftShift,
                         int rightShift,
                         int topShift,
                         int bottomShift)

        Crop image with shifts.

        Overrides:
        crop in class RasterCachedMultipageImage
        Parameters:
        leftShift - The left shift.
        rightShift - The right shift.
        topShift - The top shift.
        bottomShift - The bottom shift.
      • binarizeFixed

        public void binarizeFixed(byte threshold)

        Binarization of an image with predefined threshold

        Overrides:
        binarizeFixed in class RasterCachedMultipageImage
        Parameters:
        threshold - Threshold value. If corresponding gray value of a pixel is greater than threshold, a value of 255 will be assigned to it, 0 otherwise.
      • binarizeBradley

        public void binarizeBradley(double brightnessDifference,
                                    int windowSize)

        Binarization of an image using Bradley's adaptive thresholding algorithm using the integral image thresholding

        Overrides:
        binarizeBradley in class RasterCachedMultipageImage
        Parameters:
        brightnessDifference - The brightness difference between pixel and the average of an s x s window of pixels centered around this pixel.
        windowSize - The size of s x s window of pixels centered around this pixel
      • adjustGamma

        public void adjustGamma(float gamma)

        Gamma-correction of an image.

        Overrides:
        adjustGamma in class RasterCachedMultipageImage
        Parameters:
        gamma - Gamma for red, green and blue channels coefficient
      • adjustGamma

        public void adjustGamma(float gammaRed,
                                float gammaGreen,
                                float gammaBlue)

        Gamma-correction of an image.

        Overrides:
        adjustGamma in class RasterCachedMultipageImage
        Parameters:
        gammaRed - Gamma for red channel coefficient
        gammaGreen - Gamma for green channel coefficient
        gammaBlue - Gamma for blue channel coefficient
      • filter

        public void filter(Rectangle rectangle,
                           FilterOptionsBase options)

        Filters the specified rectangle.

        Overrides:
        filter in class RasterCachedMultipageImage
        Parameters:
        rectangle - The rectangle.
        options - The options.
        Code example:

        The following example applies various types of filters to a WEBP image.


        String dir = "c:\\temp\\";
        
        com.aspose.imaging.Image image = com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // Apply a median filter with a rectangle size of 5 to the entire image.
            webpImage.filter(webpImage.getBounds(), new com.aspose.imaging.imagefilters.filteroptions.MedianFilterOptions(5));
            webpImage.save(dir + "sample.MedianFilter.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // Apply a bilateral smoothing filter with a kernel size of 5 to the entire image.
            webpImage.filter(webpImage.getBounds(), new com.aspose.imaging.imagefilters.filteroptions.BilateralSmoothingFilterOptions(5));
            webpImage.save(dir + "sample.BilateralSmoothingFilter.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // Apply a Gaussian blur filter with a radius of 5 and a sigma value of 4.0 to the entire image.
            webpImage.filter(webpImage.getBounds(), new com.aspose.imaging.imagefilters.filteroptions.GaussianBlurFilterOptions(5, 4.0));
            webpImage.save(dir + "sample.GaussianBlurFilter.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // Apply a Gauss-Wiener filter with a radius of 5 and a smooth value of 4.0 to the entire image.
            webpImage.filter(webpImage.getBounds(), new com.aspose.imaging.imagefilters.filteroptions.GaussWienerFilterOptions(5, 4.0));
            webpImage.save(dir + "sample.GaussWienerFilter.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // Apply a motion wiener filter with a length of 5, a smooth value of 4.0 and an angle of 90.0 degrees to the entire image.
            webpImage.filter(webpImage.getBounds(), new com.aspose.imaging.imagefilters.filteroptions.MotionWienerFilterOptions(10, 1.0, 90.0));
            webpImage.save(dir + "sample.MotionWienerFilter.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        
        image = com.aspose.imaging.Image.load(dir + "sample.webp");
        try {
            com.aspose.imaging.fileformats.webp.WebPImage webpImage = (com.aspose.imaging.fileformats.webp.WebPImage) image;
        
            // Apply a sharpen filter with a kernel size of 5 and a sigma value of 4.0 to the entire image.
            webpImage.filter(webpImage.getBounds(), new com.aspose.imaging.imagefilters.filteroptions.SharpenFilterOptions(5, 4.0));
            webpImage.save(dir + "sample.SharpenFilter.png", new com.aspose.imaging.imageoptions.PngOptions());
        } finally {
            image.dispose();
        }
        

      • resize

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

        Resizes the image.

        Overrides:
        resize in class RasterCachedMultipageImage
        Parameters:
        newWidth - The new width.
        newHeight - The new height.
        settings - The resize settings.