Package com.alibaba.simpleimage

Source Code of com.alibaba.simpleimage.ImageCloneTest

/*
* Copyright 2012 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 org.w3c.dom.Node;

import com.alibaba.simpleimage.render.DrawTextParameter;
import com.alibaba.simpleimage.render.DrawTextRender;
import com.alibaba.simpleimage.render.FixDrawTextItem;
import com.alibaba.simpleimage.render.ScaleParameter;
import com.alibaba.simpleimage.render.ScaleRender;
import com.alibaba.simpleimage.render.WriteRender;
import com.alibaba.simpleimage.util.NodeUtils;

/**
* 类ImageCloneTest.java的实现描述:TODO 类实现描述
*
* @author wendell 2012-3-12 下午4:17:53
*/
public class ImageCloneTest extends BaseTest {

    static File jpgDir  = new File("./src/test/resources/conf.test/simpleimage/scale");
    static File cmykDir = new File("./src/test/resources/conf.test/simpleimage/cmyk");
    static File grayDir = new File("./src/test/resources/conf.test/simpleimage/gray");
    static File gifDir  = new File("./src/test/resources/conf.test/simpleimage/gif");
    static File pngDir  = new File("./src/test/resources/conf.test/simpleimage/png");

    public void testJPEGClone() throws Exception {
        File input = new File(jpgDir, "334.jpg");
        ImageWrapper imgWrapper = read(input);
        ImageWrapper newImg = (ImageWrapper) imgWrapper.clone();
        assertEquals(imgWrapper.getHeight(), newImg.getHeight());
        assertEquals(imgWrapper.getWidth(), newImg.getWidth());
        assertEquals(imgWrapper.getHorizontalSamplingFactor(0), newImg.getHorizontalSamplingFactor(0));
        assertEquals(imgWrapper.getHorizontalSamplingFactor(1), newImg.getHorizontalSamplingFactor(1));
        assertEquals(imgWrapper.getHorizontalSamplingFactor(2), newImg.getHorizontalSamplingFactor(2));
        assertEquals(imgWrapper.getNumOfImages(), newImg.getNumOfImages());
        assertEquals(imgWrapper.getQuality(), newImg.getQuality());
        assertEquals(imgWrapper.isBroken(), newImg.isBroken());
        assertEquals(imgWrapper.getVerticalSamplingFactor(0), newImg.getVerticalSamplingFactor(0));
        assertEquals(imgWrapper.getVerticalSamplingFactor(1), newImg.getVerticalSamplingFactor(1));
        assertEquals(imgWrapper.getVerticalSamplingFactor(2), newImg.getVerticalSamplingFactor(2));
        assertEquals(imgWrapper.getImageFormat(), newImg.getImageFormat());
    }

    public void testPNGClone() throws Exception {
        File input = new File(pngDir, "normal.png");
        ImageWrapper imgWrapper = read(input);
        ImageWrapper newImg = (ImageWrapper) imgWrapper.clone();
        assertEquals(imgWrapper.getHeight(), newImg.getHeight());
        assertEquals(imgWrapper.getWidth(), newImg.getWidth());
        assertEquals(imgWrapper.getHorizontalSamplingFactor(0), newImg.getHorizontalSamplingFactor(0));
        assertEquals(imgWrapper.getHorizontalSamplingFactor(1), newImg.getHorizontalSamplingFactor(1));
        assertEquals(imgWrapper.getHorizontalSamplingFactor(2), newImg.getHorizontalSamplingFactor(2));
        assertEquals(imgWrapper.getNumOfImages(), newImg.getNumOfImages());
        assertEquals(imgWrapper.getQuality(), newImg.getQuality());
        assertEquals(imgWrapper.getVerticalSamplingFactor(0), newImg.getVerticalSamplingFactor(0));
        assertEquals(imgWrapper.getVerticalSamplingFactor(1), newImg.getVerticalSamplingFactor(1));
        assertEquals(imgWrapper.getVerticalSamplingFactor(2), newImg.getVerticalSamplingFactor(2));
        assertEquals(imgWrapper.getImageFormat(), newImg.getImageFormat());
    }

    public void testGIFClone() throws Exception {
        File input = new File(gifDir, "1212.gif");
        ImageWrapper imgWrapper = read(input);
        ImageWrapper newImg = (ImageWrapper) imgWrapper.clone();

        assertTrue(imgWrapper.getStreamMetadata() != newImg.getStreamMetadata());
        assertEquals(imgWrapper.getHeight(), newImg.getHeight());
        assertEquals(imgWrapper.getWidth(), newImg.getWidth());
        for (int i = 0; i < imgWrapper.getNumOfImages(); i++) {
            assertEquals(imgWrapper.getHeight(i), newImg.getHeight(i));
            assertEquals(imgWrapper.getWidth(i), newImg.getWidth(i));
        }
        assertEquals(imgWrapper.getHorizontalSamplingFactor(0), newImg.getHorizontalSamplingFactor(0));
        assertEquals(imgWrapper.getHorizontalSamplingFactor(1), newImg.getHorizontalSamplingFactor(1));
        assertEquals(imgWrapper.getHorizontalSamplingFactor(2), newImg.getHorizontalSamplingFactor(2));
        assertEquals(imgWrapper.getNumOfImages(), newImg.getNumOfImages());
        assertEquals(imgWrapper.getQuality(), newImg.getQuality());
        assertEquals(imgWrapper.getVerticalSamplingFactor(0), newImg.getVerticalSamplingFactor(0));
        assertEquals(imgWrapper.getVerticalSamplingFactor(1), newImg.getVerticalSamplingFactor(1));
        assertEquals(imgWrapper.getVerticalSamplingFactor(2), newImg.getVerticalSamplingFactor(2));
        assertEquals(imgWrapper.getImageFormat(), newImg.getImageFormat());
    }

    public void testCloneInstanceIndependence() throws Exception {
        File input = new File(jpgDir, "334.jpg");
        ImageWrapper imgWrapper = read(input);
        ImageWrapper newImg = (ImageWrapper) imgWrapper.clone();
        imgWrapper.setHorizontalSamplingFactor(1, 2);
        assertEquals(2, imgWrapper.getHorizontalSamplingFactor(1));
        assertEquals(1, newImg.getHorizontalSamplingFactor(1));

        imgWrapper.setVerticalSamplingFactor(2, 2);
        assertEquals(2, imgWrapper.getVerticalSamplingFactor(2));
        assertEquals(1, newImg.getVerticalSamplingFactor(2));

        imgWrapper.setBroken(true);
        assertEquals(false, newImg.isBroken());

        input = new File(gifDir, "animate_4.gif");
        imgWrapper = read(input);
        newImg = (ImageWrapper) imgWrapper.clone();
        Node streamMetadata = imgWrapper.getStreamMetadata();
        NodeUtils.removeChild(streamMetadata, "GlobalColorTable");
        assertNull(NodeUtils.getChild(streamMetadata, "GlobalColorTable"));
        assertNotNull(NodeUtils.getChild(newImg.getStreamMetadata(), "GlobalColorTable"));

        Node imageMetadata = imgWrapper.getMetadata(0);
        assertNotNull(NodeUtils.getChild(imageMetadata, "LocalColorTable"));
        NodeUtils.removeChild(imageMetadata, "LocalColorTable");
        assertNull(NodeUtils.getChild(imageMetadata, "LocalColorTable"));
        assertNotNull(NodeUtils.getChild(newImg.getMetadata(0), "LocalColorTable"));
    }

    public void testCloneJPEGOutput() throws Exception {
        DrawTextParameter dparam = new DrawTextParameter();
        dparam.addTextInfo(new FixDrawTextItem("alibaba"));

        File[] files = jpgDir.listFiles();
 

        for (File file : files) {
            String fileName = file.getName().toLowerCase();
            if (fileName.endsWith("jpg")) {
                File outFile1 = new File(resultDir, "CLONEJPEG_" + fileName + "_1.jpg");
                File outFile2 = new File(resultDir, "CLONEJPEG_" + fileName + "_2.jpg");
                ImageWrapper imgWrapper = read(file);
                ImageWrapper cloneWrapper = (ImageWrapper) imgWrapper.clone();

                scale(imgWrapper, new ScaleParameter(100, 100), outFile1, ImageFormat.JPEG);
                draw(cloneWrapper, dparam, outFile2, ImageFormat.JPEG);
            }
        }
    }

    public void testCloneGIFOutput() throws Exception {
        DrawTextParameter dparam = new DrawTextParameter();
        dparam.addTextInfo(new FixDrawTextItem("alibaba"));
       
        File[] files2 = gifDir.listFiles();
        for (File file : files2) {
            String fileName = file.getName().toLowerCase();
            if (fileName.endsWith("gif")) {
                File outFile1 = new File(resultDir, "CLONEGIF_" + fileName + "_1.gif");
                File outFile2 = new File(resultDir, "CLONEGIF_" + fileName + "_2.gif");
                ImageWrapper imgWrapper = read(file);
                ImageWrapper cloneWrapper = (ImageWrapper) imgWrapper.clone();

                draw(imgWrapper, dparam, outFile2, ImageFormat.GIF);
                scale(cloneWrapper, new ScaleParameter(100, 100), outFile1, ImageFormat.GIF);
            }
        }
    }

    void scale(ImageWrapper imgWrapper, ScaleParameter param, File output, ImageFormat format) throws Exception {
        WriteRender wr = null;
        try {
            ImageRender sr = new ScaleRender(imgWrapper, param);
            wr = new WriteRender(sr, output, format);

            wr.render();
        } finally {
            if (wr != null) {
                wr.dispose();
            }
        }
    }

    void draw(ImageWrapper imgWrapper, DrawTextParameter param, File output, ImageFormat format) throws Exception {
        WriteRender wr = null;
        try {
            ImageRender sr = new DrawTextRender(imgWrapper, param);
            wr = new WriteRender(sr, output, format);

            wr.render();
        } finally {
            if (wr != null) {
                wr.dispose();
            }
        }
    }
}
TOP

Related Classes of com.alibaba.simpleimage.ImageCloneTest

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.