Package org.geotools.image

Source Code of org.geotools.image.CropImageTest

package org.geotools.image;

import static org.junit.Assert.*;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.renderable.ParameterBlock;

import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import javax.media.jai.TileCache;
import javax.media.jai.operator.ExtremaDescriptor;
import javax.media.jai.operator.SubtractDescriptor;

import org.geotools.image.crop.GTCropDescriptor;
import org.junit.Assert;
import org.junit.Test;

import com.sun.media.jai.util.SunTileCache;

public class CropImageTest {

    @Test
    public void testCropImagePB() {
        BufferedImage source = buildSource();
       
        ParameterBlock pb = buildParameterBlock(source);
       
        RenderedOp cropped = JAI.create("crop", pb);
        RenderedOp gtCropped = JAI.create("GTCrop", pb);
        assertImageEquals(cropped, gtCropped);
    }

    @Test
    public void testTileCache() {
        TileCache tc = new SunTileCache();
        RenderingHints hints = new RenderingHints(JAI.KEY_TILE_CACHE, tc);
       
        BufferedImage source = buildSource();
        ParameterBlock pb = buildParameterBlock(source);
       
        RenderedOp gtCropped = JAI.create("GTCrop", pb, hints);
        gtCropped.getColorModel(); // force to compute the image
        assertSame(tc,  gtCropped.getRenderingHint(JAI.KEY_TILE_CACHE));
    }
   
    @Test
    public void testNullTileCache() {
        RenderingHints hints = new RenderingHints(JAI.KEY_TILE_CACHE, null);
       
        BufferedImage source = buildSource();
        ParameterBlock pb = buildParameterBlock(source);
       
        RenderedOp gtCropped = JAI.create("GTCrop", pb, hints);
        gtCropped.getColorModel(); // force to compute the image
        assertNull(gtCropped.getRenderingHint(JAI.KEY_TILE_CACHE));
    }
   
    @Test
    public void testNullTileCacheDescriptor() {
        RenderingHints hints = new RenderingHints(JAI.KEY_TILE_CACHE, null);
       
        BufferedImage source = buildSource();
       
        RenderedOp gtCropped = GTCropDescriptor.create(source, 10f, 10f, 20f, 20f, hints);
        gtCropped.getColorModel(); // force to compute the image
        assertNull(gtCropped.getRenderingHint(JAI.KEY_TILE_CACHE));
    }
   
    private BufferedImage buildSource() {
        BufferedImage source = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D g = (Graphics2D) source.getGraphics();
        g.setPaint(new GradientPaint(new Point(0, 0), Color.WHITE, new Point(100, 100), Color.BLACK));
        g.dispose();
        return source;
    }

    private void assertImageEquals(RenderedOp first, RenderedOp second) {
        RenderedOp difference = SubtractDescriptor.create(first, second, null);
        RenderedOp stats = ExtremaDescriptor.create(difference, null, 1, 1, false, 1, null);
       
        double[] minimum = (double[]) stats.getProperty("minimum");
        double[] maximum = (double[]) stats.getProperty("maximum");
        assertEquals(minimum[0], maximum[0], 0.0);
        assertEquals(minimum[1], maximum[1], 0.0);
        assertEquals(minimum[2], maximum[2], 0.0);
    }

    private ParameterBlock buildParameterBlock(BufferedImage source) {
        ParameterBlock pb = new ParameterBlock();
        pb.addSource(source);
        pb.add((float) 10);
        pb.add((float) 50);
        pb.add((float) 20);
        pb.add((float) 20);
        return pb;
    }
}
TOP

Related Classes of org.geotools.image.CropImageTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.