/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content.image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import static org.junit.Assert.*;
/**
* Created by IntelliJ IDEA.
* User: rmh
* Date: 9/20/11
* Time: 2:18 PM
*/
public class ImageUtilTest
{
private BufferedImage originalImage;
private BufferedImage extremeImage;
@Before
public void setUp()
{
try
{
originalImage = ImageIO.read( loadImage( "Arn.jpg" ) );
extremeImage = ImageIO.read( loadImage( "transparentLine.png" ) );
}
catch ( IOException e )
{
fail( "Image not found" );
}
}
@Test
public void testScaleImage()
{
BufferedImage scaledImage = ImageUtil.scaleImage( originalImage, 200, 200, ContentImageUtil.getBufferedImageType( "jpg" ) );
Assert.assertEquals( 200, scaledImage.getHeight() );
Assert.assertEquals( 200, scaledImage.getWidth() );
}
@Test
public void testScaleImageIllegalValues()
{
BufferedImage scaledImage = ImageUtil.scaleImage( originalImage, -200, -200, ContentImageUtil.getBufferedImageType( "jpg" ) );
Assert.assertEquals( 1, scaledImage.getHeight() );
Assert.assertEquals( 1, scaledImage.getWidth() );
}
@Test
public void testScaleImageExtremeValues()
{
BufferedImage scaledImage = ImageUtil.scaleImage( extremeImage, 400, 0, ContentImageUtil.getBufferedImageType( "png" ) );
Assert.assertEquals( 1, scaledImage.getHeight() );
Assert.assertEquals( 400, scaledImage.getWidth() );
}
@Test
public void testTransparencyIsKeptInScaling()
{
BufferedImage scaledImage = ImageUtil.scaleImage( extremeImage, 400, 3, ContentImageUtil.getBufferedImageType( "png" ) );
double[] alphaPixel = {100.0};
scaledImage.getAlphaRaster().getPixel( 200, 1, alphaPixel );
Assert.assertEquals( 0.0, alphaPixel[0], 0.0 );
alphaPixel[0] = 100.0;
scaledImage.getAlphaRaster().getPixel( 0, 0, alphaPixel );
Assert.assertEquals( 0.0, alphaPixel[0], 0.0 );
alphaPixel[0] = 100.0;
scaledImage.getAlphaRaster().getPixel( 399, 2, alphaPixel );
Assert.assertEquals( 0.0, alphaPixel[0], 0.0 );
}
private InputStream loadImage( String fileName )
throws IOException
{
ClassPathResource resource = new ClassPathResource( ImageUtilTest.class.getName().replace( ".", "/" ) + "-" + fileName );
return resource.getInputStream();
}
}