Package com.alibaba.simpleimage

Source Code of com.alibaba.simpleimage.WatermarkTest

/*
* Copyright 1999-2004 Alibaba.com All right reserved. This software is the
* confidential and proprietary information of Alibaba.com ("Confidential
* Information"). You shall not disclose such Confidential Information and shall
* use it only in accordance with the terms of the license agreement you entered
* into with Alibaba.com.
*/
package com.alibaba.simpleimage;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import junit.framework.TestCase;

import org.apache.commons.io.IOUtils;

import com.alibaba.simpleimage.render.ReadRender;
import com.alibaba.simpleimage.render.ScaleParameter;
import com.alibaba.simpleimage.render.ScaleRender;
import com.alibaba.simpleimage.render.WatermarkParameter;
import com.alibaba.simpleimage.render.WatermarkRender;
import com.alibaba.simpleimage.render.WriteRender;


/**
* 类WatermarkTest.java的实现描述:TODO 类实现描述
* @author wendell 2011-8-17 下午05:18:52
*/
public class WatermarkTest extends TestCase {

    static File path = new File("./src/test/resources/conf.test/simpleimage/gif");
    static File jpegDir = new File("./src/test/resources/conf.test/simpleimage/scale");
    static File resultDir = new File("./src/test/resources/conf.test/simpleimage/result");
   
    /**
     * Test method for
     * {@link com.alibaba.simpleimage.render.WatermarkRender#WatermarkRender(com.alibaba.simpleimage.ImageRender, com.alibaba.simpleimage.render.WatermarkParameter)}
     * .
     */
    public void testJPGWatermarkRender() throws Exception {
        doTest(jpegDir, jpegDir,"334.jpg", "snow.jpg", 0.7f, 50, 50);
    }

    public void testAlphaRangeWatermarkRender() throws Exception {
        float alpha = 0.0f;
        for(int i = 0; i < 10; i++) {
            doTest(jpegDir, path, "334.jpg", "alibaba1.gif", alpha, 0, 0);
            alpha += 0.1f;
        }
    }

    public void testApp() throws Exception {
        InputStream in = null;
        ImageWrapper srcImageWrapper = null;
        ImageRender rr = null;
        try {
            in = new FileInputStream(new File(path, "cb.GIF"));
            rr = new ReadRender(in, true);
            srcImageWrapper = rr.render();
        } finally {
            if (rr != null) {
                rr.dispose();
            }
            IOUtils.closeQuietly(in);
        }
       
        int width = srcImageWrapper.getWidth();
        int height = srcImageWrapper.getHeight();
       
        ImageWrapper wmImage = null;
        ImageRender sr = null;
        try {
            in = new FileInputStream(new File(path, "alibaba1.gif"));
            rr = new ReadRender(in, false);
            sr = new ScaleRender(rr, new ScaleParameter(width, height, ScaleParameter.Algorithm.SUBSAMPLE_AVG));
            wmImage = sr.render();
        } finally {
            if (sr != null) {
                sr.dispose();
            }
            IOUtils.closeQuietly(in);
        }
       
        ImageRender wi = null;
        WatermarkParameter param = new WatermarkParameter(wmImage, 0.3f, 0, 0);
        try {
            wi = new WatermarkRender(srcImageWrapper, param);
            srcImageWrapper = wi.render();
        } finally {
            if(wi != null) {
                wi.dispose();
            }
        }
       
        write(srcImageWrapper, "app-result.jpg");
    }
   
    void doTest(File dir, File wmDir, String bg, String wm, float alpha, int x, int y) throws Exception {
        InputStream in = null;
        ImageRender sr = null;
        try {
            in = new FileInputStream(new File(dir, bg));
            ImageRender rr = new ReadRender(in, true);
            sr = new WatermarkRender(rr, createParam(wmDir, wm, alpha, x, y));
            write(sr, alpha + "-result-" + bg);
        } finally {
            if (sr != null) {
                sr.dispose();
            }
            IOUtils.closeQuietly(in);
        }
    }

    WatermarkParameter createParam(File dir, String imgPath, float alpha, int x, int y) throws Exception {
        InputStream in = null;
        ImageRender rr = null;
        ImageWrapper imageWrapper = null;
        try {
            in = new FileInputStream(new File(dir, imgPath));
            rr = new ReadRender(in, false);
            imageWrapper = rr.render();
        } finally {
            if (rr != null) {
                rr.dispose();
            }
            IOUtils.closeQuietly(in);
        }

        WatermarkParameter param = new WatermarkParameter(imageWrapper, alpha, x, y);

        return param;
    }

    public void write(ImageRender sr, String filename) throws Exception {
        OutputStream output = null;
        ImageRender wr = null;

        try {
            output = new FileOutputStream(new File(resultDir, filename));
            wr = new WriteRender(sr, output, ImageFormat.JPEG);
            wr.render();
        } finally {
            if (wr != null) {
                wr.dispose();
            }
            IOUtils.closeQuietly(output);
        }
    }
   
    public void write(ImageWrapper sr, String filename) throws Exception {
        OutputStream output = null;
        ImageRender wr = null;

        try {
            output = new FileOutputStream(new File(resultDir, filename));
            wr = new WriteRender(sr, output, ImageFormat.JPEG);
            wr.render();
        } finally {
            if (wr != null) {
                wr.dispose();
            }
            IOUtils.closeQuietly(output);
        }
    }
}
TOP

Related Classes of com.alibaba.simpleimage.WatermarkTest

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.