com.google.code.kaptcha.impl.WaterRipple Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kaptcha Show documentation
Show all versions of kaptcha Show documentation
A web kaptcha generation engine
package com.google.code.kaptcha.impl;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import com.google.code.kaptcha.GimpyEngine;
import com.google.code.kaptcha.NoiseProducer;
import com.google.code.kaptcha.util.Configurable;
import com.jhlabs.image.RippleFilter;
import com.jhlabs.image.TransformFilter;
import com.jhlabs.image.WaterFilter;
/**
* {@link WaterRipple} adds water ripple effect to an image.
*/
public class WaterRipple extends Configurable implements GimpyEngine
{
/**
* Applies distortion by adding water ripple effect.
*
* @param baseImage the base image
* @return the distorted image
*/
public BufferedImage getDistortedImage(BufferedImage baseImage)
{
NoiseProducer noiseProducer = getConfig().getNoiseImpl();
BufferedImage distortedImage = new BufferedImage(baseImage.getWidth(),
baseImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = (Graphics2D) distortedImage.getGraphics();
RippleFilter rippleFilter = new RippleFilter();
rippleFilter.setWaveType(RippleFilter.SINE);
rippleFilter.setXAmplitude(2.6f);
rippleFilter.setYAmplitude(1.7f);
rippleFilter.setXWavelength(15);
rippleFilter.setYWavelength(5);
rippleFilter.setEdgeAction(TransformFilter.NEAREST_NEIGHBOUR);
WaterFilter waterFilter = new WaterFilter();
waterFilter.setAmplitude(1.5f);
waterFilter.setPhase(10);
waterFilter.setWavelength(2);
BufferedImage effectImage = waterFilter.filter(baseImage, null);
effectImage = rippleFilter.filter(effectImage, null);
graphics.drawImage(effectImage, 0, 0, null, null);
graphics.dispose();
noiseProducer.makeNoise(distortedImage, .1f, .1f, .25f, .25f);
noiseProducer.makeNoise(distortedImage, .1f, .25f, .5f, .9f);
return distortedImage;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy