Package com.alibaba.simpleimage.jai.scale

Source Code of com.alibaba.simpleimage.jai.scale.LanczosTest

/**
* Project: simpleimage File Created at 2011-3-4 $Id$ Copyright 2008 Alibaba.com Croporation Limited. All rights
* reserved. This software is the confidential and proprietary information of Alibaba Company.
* ("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.jai.scale;

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

import junit.framework.TestCase;

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;

import com.alibaba.simpleimage.ImageFormat;
import com.alibaba.simpleimage.ImageRender;
import com.alibaba.simpleimage.render.ReadRender;
import com.alibaba.simpleimage.render.ScaleParameter;
import com.alibaba.simpleimage.render.ScaleRender;
import com.alibaba.simpleimage.render.WriteRender;
import com.alibaba.simpleimage.render.ScaleParameter.Algorithm;

/**
* TODO Comment of LanczosTest
*
* @author wendell
*/
public class LanczosTest extends TestCase {

    static final File dir = new File("./src/test/resources/conf.test/simpleimage/scale");
    static final File resultDir = new File("./src/test/resources/conf.test/simpleimage/result");
   
    public void testQuality() throws Exception {
        String[] imgNames = { "color.jpg", "334.jpg", "sawtooth.jpg", "airport.jpg", "4.jpg", "6.jpg", "7.jpg",
                "8.jpg", "9.jpg", "IMG_0033.jpg" };
        for (String imgName : imgNames) {
            File in = new File(dir, imgName);
            File out = new File(resultDir, "LANCZOS_" + getShortname(imgName) + "_java_lanczos_1024_result.jpg");
            ScaleParameter scaleParam = new ScaleParameter(1024, 1024, Algorithm.LANCZOS);
            doScale(in, out, scaleParam);
        }
    }

    public void testQuailty2() throws Exception {
        String[] imgNames = { "st.jpg", "yuan.jpg" };
        for (String imgName : imgNames) {
            File in = new File(dir, imgName);
            File out = new File(resultDir, "LANCZOS_" + getShortname(imgName) + "_java_lanczos_300_result.jpg");
            ScaleParameter scaleParam = new ScaleParameter(300, 300, Algorithm.LANCZOS);
            doScale(in, out, scaleParam);
        }
    }

    public void testScaleGIF() throws Exception {
        File gif = new File(dir, "box_disapper.gif");
        File dest = new File(resultDir, "LANCZOS_box_disapper_java_lanczos_result.gif");
        ScaleParameter scaleParam = new ScaleParameter(310, 310, Algorithm.LANCZOS);
        doScale(gif, dest, scaleParam, ImageFormat.GIF, true);
    }

    public void testPNG() throws Exception {
        File png = new File(dir, "rings.png");
        File dest = new File(resultDir, "LANCZOS_rings_java_lanczos_result.jpg");
        ScaleParameter scaleParam = new ScaleParameter(310, 310, Algorithm.LANCZOS);
        doScale(png, dest, scaleParam);

        png = new File(dir, "a.png");
        dest = new File(resultDir, "LANCZOS_a_java_lanczos_result.jpg");
        scaleParam = new ScaleParameter(832, 1176, Algorithm.LANCZOS);
        doScale(png, dest, scaleParam);
    }
   
    public void testScaleGray() throws Exception {
        File gif = new File(dir, "gray.jpg");
        File dest = new File(resultDir, "LANCZOS_gray_java_lanczos_result.jpg");
        ScaleParameter scaleParam = new ScaleParameter(310, 310, Algorithm.LANCZOS);
        doScale(gif, dest, scaleParam, ImageFormat.JPEG, false );
    }

    public void testScaleCMYK() throws Exception {
        File cmyk = new File("./src/test/resources/conf.test/simpleimage/cmyk/cmyk_noprofile_1.jpg");
        File dest = new File(resultDir, "LANCZOS_cmyk1_java_lanczos_result.jpg");
        ScaleParameter scaleParam = new ScaleParameter(512, 512, Algorithm.LANCZOS);
        doScale(cmyk, dest, scaleParam, ImageFormat.JPEG, false);
       
        cmyk = new File("./src/test/resources/conf.test/simpleimage/cmyk/cmyk_noprofile_2.jpg");
        dest = new File(resultDir, "LANCZOS_cmyk2_java_lanczos_result.jpg");
        doScale(cmyk, dest, scaleParam, ImageFormat.JPEG, false);
       
        cmyk = new File("./src/test/resources/conf.test/simpleimage/cmyk/cmyk_noprofile_3.jpg");
        dest = new File(resultDir, "LANCZOS_cmyk3_java_lanczos_result.jpg");
        doScale(cmyk, dest, scaleParam, ImageFormat.JPEG, false);
       
        cmyk = new File("./src/test/resources/conf.test/simpleimage/cmyk/ycck_embedprofile_1.jpg");
        dest = new File(resultDir, "LANCZOS_ycck1_java_lanczos_result.jpg");
        doScale(cmyk, dest, scaleParam, ImageFormat.JPEG, false);
       
        cmyk = new File("./src/test/resources/conf.test/simpleimage/cmyk/ycck_embedprofile_2.jpg");
        dest = new File(resultDir, "LANCZOS_ycck2_java_lanczos_result.jpg");
        doScale(cmyk, dest, scaleParam, ImageFormat.JPEG, false);
       
        cmyk = new File("./src/test/resources/conf.test/simpleimage/cmyk/ycck_noprofile.jpg");
        dest = new File(resultDir, "LANCZOS_ycckn_java_lanczos_result.jpg");
        doScale(cmyk, dest, scaleParam, ImageFormat.JPEG, false);
    }
   
   
    public void testScaleBounds() throws Exception {
        File img = new File(dir, "color.jpg");
        for (int i = 1; i < 32; i++) {
            File dest = new File(resultDir, "LANCZOS_color_java_lanczos_" + i + "_result.jpg");
            ScaleParameter scaleParam = new ScaleParameter(i, i, Algorithm.LANCZOS);
            doScale(img, dest, scaleParam);
        }

        for (int i = 31; i < 150; i += 8) {
            File dest = new File(resultDir, "LANCZOS_color_java_lanczos_" + i + "_result.jpg");
            ScaleParameter scaleParam = new ScaleParameter(i, i, Algorithm.LANCZOS);
            doScale(img, dest, scaleParam);
        }

        for (int i = 1000; i <= 2000; i += 100) {
            File dest = new File(resultDir, "LANCZOS_color_java_lanczos_" + i + "_result.jpg");
            ScaleParameter scaleParam = new ScaleParameter(i, i, Algorithm.LANCZOS);
            doScale(img, dest, scaleParam);
        }
    }
   
    public void testSuperLargeImg() throws Exception {
        File img = new File(dir, "flower.jpg");
        File dest = new File(resultDir, "LANCZOS_flower_java_lanczos_result.jpg");
        ScaleParameter scaleParam = new ScaleParameter(1024, 1024, ScaleParameter.Algorithm.LANCZOS);
        doScale(img, dest, scaleParam);
    }

    private String getShortname(String name) {
        if (StringUtils.isBlank(name)) {
            return null;
        }

        return name.substring(0, name.lastIndexOf("."));
    }
   
    private void doScale(File in, File out, ScaleParameter scaleParam) throws Exception {
        doScale(in, out, scaleParam, ImageFormat.JPEG, true);
    }

    private void doScale(File in, File out, ScaleParameter scaleParam, ImageFormat format, boolean toRGB) throws Exception {
        FileInputStream inStream = null;
        FileOutputStream outStream = null;
        ImageRender wr = null;
        try {
            inStream = new FileInputStream(in);
            outStream = new FileOutputStream(out);
            ImageRender rr = new ReadRender(inStream, toRGB);
            ImageRender sr = new ScaleRender(rr, scaleParam);
            wr = new WriteRender(sr, outStream, format);
            wr.render();
        } finally {
            IOUtils.closeQuietly(inStream);
            IOUtils.closeQuietly(outStream);
            if (wr != null) {
                wr.dispose();
            }
        }
    }

}
TOP

Related Classes of com.alibaba.simpleimage.jai.scale.LanczosTest

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.