Language Translator

Java class/code used in extracting the thumbnail from the image.

Java class/code used in extracting the thumbnail from the image.

public class ImageClass {

public static void main(String[] args) throws Exception {

// load image from INFILE
Image image = Toolkit.getDefaultToolkit().getImage(args[0]);

MediaTracker mediaTracker = new MediaTracker(new Container());

mediaTracker.addImage(image, 0);

mediaTracker.waitForID(0);

// determine thumbnail size from WIDTH and HEIGHT

int thumbWidth = 120;
int thumbHeight =80;

System.out.println(" thumb Width = "+ thumbWidth + " thumb Height = "+thumbHeight);

int imageWidth = image.getWidth(null);

int imageHeight = image.getHeight(null);

String outputFile = args[1];

String quality = 75;

System.out.println("imageWidth " +imageHeight);

System.out.println("imageHeight " +imageWidth);

byte[] bytes = imageSizer(imageWidth,imageHeight,thumbWidth,thumbHeight,image,outputFile,quality);


Image image1= Toolkit.getDefaultToolkit().createImage(bytes);

BufferedImage bi = convert(image1);

File file1 = new File("c:\\byteImage.jpg");

BufferedOutputStream out;
try {

out = new BufferedOutputStream(new

FileOutputStream(file1));

out.write(bytes);

out.flush();

out.close();

}
catch(Exception e)
{
e.printStackTrace();
}

System.out.println("Done.");

System.exit(0);

}

private static byte[] imageSizer(int imageWidth,int imageHeight,int thumbWidth,int thumbHeight ,Image image,String outputFile,String qualityOfImage)
{

byte[] imageAsBytes = null;

for(int i = 0 ; i < 3 ; i++)
{
double thumbRatio = (double)thumbWidth / (double)thumbHeight;

System.out.println(" Image Width = "+ imageWidth + " Height = "+imageHeight);

if (i == 0)
{
double imageRatio = (double)imageWidth / (double)imageHeight;

System.out.println(" Image Ratio"+imageRatio);

if (thumbRatio < imageRatio)
{

thumbHeight = (int)(thumbWidth / imageRatio);

}
else
{
thumbWidth = (int)(thumbHeight * imageRatio);
}
}
else if(i==2)
{
thumbWidth = imageWidth ;

thumbHeight = imageHeight ;

}
else
{
thumbWidth = thumbWidth * 2 ;
thumbHeight = thumbHeight * 2 ;
}


System.out.println(" After Checking Ratio ::: thumb Width = "+ thumbWidth + " thumb Height = "+thumbHeight);

// draw original image to thumbnail image object and
// scale it to the new size on-the-fly

BufferedImage thumbImage = new BufferedImage(thumbWidth,
thumbHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D graphics2D = thumbImage.createGraphics();

graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,

RenderingHints.VALUE_INTERPOLATION_BILINEAR);

graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);

// save thumbnail image to OUTFILE

BufferedOutputStream out;
try {

out = new BufferedOutputStream(new

FileOutputStream(outputFile+"_"+i+".jpg"));


JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

JPEGEncodeParam param = encoder.

getDefaultJPEGEncodeParam(thumbImage);

int quality = Integer.parseInt(qualityOfImage);

quality = Math.max(0, Math.min(quality, 100));

param.setQuality((float)quality / 100.0f, false);

encoder.setJPEGEncodeParam(param);

encoder.encode(thumbImage);

//Encoding it into a byte stream to store it in the database
File imageFile = new File(outputFile+"_"+i+".jpg");

imageAsBytes = getBytesFromFile(imageFile);

}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();

} catch (ImageFormatException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();

} catch (IOException e2)
{
// TODO Auto-generated catch block
e2.printStackTrace();
}
}//end of for loop
return imageAsBytes;
}

/**
*
* @param im
* @return
*/
public static BufferedImage convert(Image im)
{
int imgHeight=im.getHeight(null);
int imgWidth= im.getWidth(null) ;
BufferedImage bi = new BufferedImage( 1024 , 768 , BufferedImage.TYPE_INT_RGB);
Graphics bg = bi.getGraphics();
bg.drawImage(im, 0, 0, null);
bg.dispose();
return bi;
}
/**
* returns the byte array to the corresponding file
* @param file
* @return byte[]
* @throws IOException
*/
private static byte[] getBytesFromFile(File file) throws IOException
{

InputStream is = new FileInputStream(file);

ByteArrayOutputStream bytestream = new ByteArrayOutputStream();

final int DEFAULT_BUFFER_SIZE = 1024 * 4;

byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];

int count = 0;

int num = 0;

while ((num = is.read(buffer)) != -1)
{
bytestream.write(buffer, 0, num);

count += num;
}
return bytestream.toByteArray();
}

}

No comments:

Post a Comment