Packages

 

com.aspose.imaging.fileformats.webp

Class WebPImage

  • All Implemented Interfaces:
    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 RasterCachedImage

    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 WebPOptions getOptions()

        Gets or sets the options.

        Returns:
        The options.
      • getBitsPerPixel

        public int getBitsPerPixel()

        Gets the image bits per pixel count.

        Specified by:
        getBitsPerPixel in class Image
        Returns:
        The image bits per pixel count.
      • getBlocks

        public IFrame[] getBlocks()

        Gets the Webp blocks.

        Returns:
        The blocks.
      • hasAlpha

        public boolean hasAlpha()

        Gets a value indicating whether this instance has alpha.

        Overrides:
        hasAlpha in class RasterImage
        Returns:
        true if this instance has alpha; otherwise, false.
        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
        

      • getImageOpacity

        public float getImageOpacity()

        Gets opacity of this image.

        Overrides:
        getImageOpacity in class RasterImage
        Returns:
        The opacity value between 0.0 (fully transparent) and 1.0 (fully opaque).
      • getFileFormat

        public long getFileFormat()

        Gets a value of file format

        Overrides:
        getFileFormat in class Image
      • adjustBrightness

        public void adjustBrightness(int brightness)

        Adjust of a brightness for image.

        Overrides:
        adjustBrightness in class RasterCachedImage
        Parameters:
        brightness - Brightness value.
      • adjustContrast

        public void adjustContrast(float contrast)

        Image contrasting

        Overrides:
        adjustContrast in class RasterCachedImage
        Parameters:
        contrast - Contrast value (in range [-100; 100])
      • adjustGamma

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

        Gamma-correction of an image.

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

        public void adjustGamma(float gamma)

        Gamma-correction of an image.

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

        public void binarizeFixed(byte threshold)

        Binarization of an image with predefined threshold

        Overrides:
        binarizeFixed in class RasterCachedImage
        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 RasterCachedImage
        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
      • crop

        public void crop(Rectangle rectangle)

        Cropping the image.

        Overrides:
        crop in class RasterCachedImage
        Parameters:
        rectangle - The rectangle.
      • dither

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

        Performs dithering on the current image.

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

        public void grayscale()

        Transformation of an image to its grayscale representation

        Overrides:
        grayscale in class RasterCachedImage
      • rotate

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

        WebPImage.Rotate image around the center.

        Overrides:
        rotate in class RasterCachedImage
        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 RasterCachedImage
        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();
        }
        

      • resize

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

        Resizes the image.

        Overrides:
        resize in class RasterCachedImage
        Parameters:
        newWidth - The new width.
        newHeight - The new height.
        settings - The resize settings.
      • addBlock

        public 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 void clearBlocks()

        Clears all the Webp blocks.

      • insertBlock

        public 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 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.

      • rotateFlipAll

        public void rotateFlipAll(int rotateFlip)

        Rotates the flip all frames in the image.

        Parameters:
        rotateFlip - The rotate flip type to perform.
      • filter

        public void filter(Rectangle rectangle,
                           FilterOptionsBase options)

        Filters the specified rectangle.

        Overrides:
        filter in class RasterImage
        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();
        }
        

      • replaceColor

        public void replaceColor(int oldColorArgb,
                                 byte oldColorDiff,
                                 int newColorArgb)

        Replaces one color to another with allowed difference and preserves original alpha value to save smooth edges.

        Overrides:
        replaceColor in class RasterImage
        Parameters:
        oldColorArgb - Old color ARGB value to be replaced.
        oldColorDiff - Allowed difference in old color to be able to widen replaced color tone.
        newColorArgb - New color ARGB value to replace old color with.
      • replaceNonTransparentColors

        public void replaceNonTransparentColors(int newColorArgb)

        Replaces all non-transparent colors with new color and preserves original alpha value to save smooth edges. Note: if you use it on images without transparency, all colors will be replaced with a single one.

        Overrides:
        replaceNonTransparentColors in class RasterImage
        Parameters:
        newColorArgb - New color ARGB value to replace non transparent colors with.