Hello again,
Heres the code Ive got, Im afraid Ive messed with it a lot, Ive left the commented stuff in just in case you want to play with it.
Sorry its such a mess, cant remember where I got it, think it was on a sun turorial, you will need to get the relevant API's if you do not have them installed.
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;
public class ResizeImageServlet
{
public final void doPost(String inScale )throws Exception
{
try
{
int targetWidth=0;
int targetHeight=0;
// Get a path to the image to resize.
// ImageIcon is a kluge to make sure the image is fully
// loaded before we proceed.
Image sourceImage = new ImageIcon(Toolkit.getDefaultToolkit().
getImage("C:\\testImage.jpg")).getImage();
// Calculate the target width and height
float scale = Float.parseFloat(inScale)/100;
targetWidth = (int)(sourceImage.getWidth(null)*scale);
targetHeight = (int)(sourceImage.getHeight(null)*scale);
BufferedImage resizedImage = this.scaleImage
(sourceImage,targetWidth,targetHeight);
// Output the finished image straight to the response as a JPEG!
//res.setContentType("image/jpeg");
//JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder
//InputStream is = new BufferedImag("test");
//JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is);
ByteArrayOutputStream out = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(resizedImage);
byte[] b = out.toByteArray();
//int offset=0;
//int length = (b, 0, b.length());
//inputLine = new String (b, 0, 0, length);
//********************************************
JPEGCodec.createJPEGEncoder(new FileOutputStream("C:\\testImage.jpg")).encode(resi zedImage);
for (int i=0; i<200; i++)
{
System.out.println(b[i]);
}
//InputStream is = new FileInputStream(img);
//(res.getOutputStream());
//encoder.encode(resizedImage);
String databaseDriver = "org.gjt.mm.mysql.Driver";
Class.forName( databaseDriver );
String databaseName = "jdbc:mysql://localhost/test";
Connection con = null;
con = DriverManager.getConnection(databaseName, "testDb","");
String str = "INSERT INTO images (detail, image) VALUES (?,?)";
PreparedStatement pstmt = con.prepareStatement(str);
pstmt.setString(1, "test Sting");
//pstmt.setBinaryStream( 2, resizedImage, (int)(resizedImage.length()));
pstmt.setString( 2, "resizedImage");
pstmt.executeUpdate();
pstmt.close();
pstmt = null;
con.close();
con = null;
}
catch(Exception e)
{
//res.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
}
private BufferedImage scaleImage(Image sourceImage, int width, int height)
{
ImageFilter filter = new ReplicateScaleFilter(width,height);
ImageProducer producer = new FilteredImageSource
(sourceImage.getSource(),filter);
Image resizedImage = Toolkit.getDefaultToolkit().createImage(producer);
return this.toBufferedImage(resizedImage);
}
private BufferedImage toBufferedImage(Image image)
{
image = new ImageIcon(image).getImage();
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null)
,image.getHeight(null),BufferedImage.TYPE_INT_RGB) ;
Graphics g = bufferedImage.createGraphics();
g.setColor(Color.white);
g.fillRect(0,0,image.getWidth(null),image.getHeigh t(null));
g.drawImage(image,0,0,null);
g.dispose();
return bufferedImage;
}
}
|