
net.coobird.thumbnailator.resizers.Resizers Maven / Gradle / Ivy
package net.coobird.thumbnailator.resizers;
import java.awt.image.BufferedImage;
/**
* This enum can be used to select a specific {@link Resizer} in order
* to perform a resizing operation.
*
* The instance held by a value of this enum is a single instance. When using
* specific implementations of {@link Resizer}s, it is preferable to obtain
* an instance of a {@link Resizer} through this enum or the
* {@link DefaultResizerFactory} class in order to prevent many instances of the
* {@link Resizer} class implementations from being instantiated.
*
*
* - Usage:
* -
* The following example code demonstrates how to use the {@link Resizers} enum
* in order to resize an image using bilinear interpolation:
*
*
BufferedImage sourceImage = new BufferedImageBuilder(400, 400).build();
BufferedImage destImage = new BufferedImageBuilder(200, 200).build();
Resizers.BILINEAR.resize(sourceImage, destImage);
*
*
*
*
* @see DefaultResizerFactory
*
* @author coobird
*
*/
public enum Resizers implements Resizer
{
/**
* A {@link Resizer} which does not perform resizing operations. The source
* image will be drawn at the origin of the destination image.
*/
NULL(new NullResizer()),
/**
* A {@link Resizer} which performs resizing operations using
* bilinear interpolation.
*/
BILINEAR(new BilinearResizer()),
/**
* A {@link Resizer} which performs resizing operations using
* bicubic interpolation.
*/
BICUBIC(new BicubicResizer()),
/**
* A {@link Resizer} which performs resizing operations using
* progressive bilinear scaling.
*
* For details on this technique, refer to the documentation of the
* {@link ProgressiveBilinearResizer} class.
*/
PROGRESSIVE(new ProgressiveBilinearResizer())
;
private final Resizer resizer;
private Resizers(Resizer resizer)
{
this.resizer = resizer;
}
public void resize(BufferedImage srcImage, BufferedImage destImage)
{
resizer.resize(srcImage, destImage);
}
}