/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.image;
import java.awt.image.BufferedImage;
import com.enonic.cms.framework.util.ImageHelper;
import com.enonic.cms.core.image.ImageRequest;
import com.enonic.cms.core.image.ImageResponse;
import com.enonic.cms.core.image.filter.BuilderContext;
import com.enonic.cms.core.image.filter.ImageFilter;
import com.enonic.cms.core.image.filter.ImageFilterBuilder;
public final class ImageProcessor
{
private final ImageFilterBuilder imageFilterBuilder;
public ImageProcessor()
{
this.imageFilterBuilder = new ImageFilterBuilder();
}
public ImageResponse process( ImageRequest req, BufferedImage image )
throws Exception
{
image = getFilter( req ).filter( image );
return createResponse( req, image );
}
private ImageFilter getFilter( ImageRequest req )
{
BuilderContext context = new BuilderContext();
context.setBackgroundColor( req.getParams().getBackgroundColor() );
return this.imageFilterBuilder.build( context, req.getParams().getFilter() );
}
private ImageResponse createResponse( ImageRequest req, BufferedImage image )
throws Exception
{
String format = req.getFormat();
if ( !ImageHelper.supportsAlphaChannel( format ) )
{
image = ImageHelper.removeAlphaChannel( image, req.getParams().getBackgroundColor() );
}
byte[] data = ImageHelper.writeImage( image, format, req.getParams().getQuality(), true );
return new ImageResponse( req.getName(), data, format );
}
}