/*
* Copyright 2013, Morten Nobel-Joergensen
*
* License: The BSD 3-Clause License
* http://opensource.org/licenses/BSD-3-Clause
*/
package com.mortennobel.imagescaling;
import junit.framework.TestCase;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageOutputStream;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.*;
/**
* Created by IntelliJ IDEA.
* User: morten
* Date: Dec 7, 2010
* Time: 8:46:05 PM
* To change this template use File | Settings | File Templates.
*/
public class Issue20 extends TestCase {
public void testScaleImage() throws Exception {
BufferedImage img = ImageIO.read(getClass().getResourceAsStream("issue20.jpg"));
ResampleOp resampleOp = new ResampleOp(DimensionConstrain.createMaxDimension(200,200));
resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.None);
BufferedImage rescaledImage = resampleOp.filter(img, null);
File file = new File("Issue20_scaled.jpeg");
ImageIO.write(rescaledImage, "jpg", file);
ImageOutputStream ios = new FileImageOutputStream(file);
ImageUtils.copyJpegMetaData(getClass().getResourceAsStream("issue20.jpg"), new FileInputStream(file),ios);
}
public void testScaleImageByteArray() throws Exception {
// read image data as byte array
ByteArrayOutputStream source = new ByteArrayOutputStream();
InputStream is = getClass().getResourceAsStream("issue20.jpg");
int i;
while ((i= is.read())!=-1){
source.write(i);
}
is.close();
// read source image
BufferedImage img = ImageIO.read(new ByteArrayInputStream(source.toByteArray()));
// scale image
ResampleOp resampleOp = new ResampleOp(DimensionConstrain.createMaxDimension(200,200));
resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.None);
BufferedImage rescaledImage = resampleOp.filter(img, null);
// save scaled image as byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(rescaledImage, "jpg", baos);
// copy exif informations
byte[] res = ImageUtils.copyJpegMetaData(source.toByteArray(), baos.toByteArray());
FileOutputStream fos = new FileOutputStream("issue20_byte.jpg");
fos.write(res);
}
}