代碼:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class Servlet2 extends HttpServlet {
// 設定輸出的類型
private static final String GIF = "image/gif;charset=GB2312";
private static final String JPG = "image/jpeg;charset=GB2312";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*String imagePath = "D:\\1234.gif";*/
String imagePath = this.getServletContext().getRealPath("/img/1234.gif");//獲取真實路徑
response.reset();
OutputStream output = response.getOutputStream();// 得到輸出流
if (imagePath.toLowerCase().endsWith(".jpg"))// 使用編碼處理文件流的情況:
{
response.setContentType(JPG);// 設定輸出的類型
// 得到圖片的真實路徑
// 得到圖片的文件流
InputStream imageIn = new FileInputStream(new File(imagePath));
// 得到輸入的編碼器,將文件流進行jpg格式編碼
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
// 得到編碼后的圖片對象
BufferedImage image = decoder.decodeAsBufferedImage();
// 得到輸出的編碼器
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(image);// 對圖片進行輸出編碼
imageIn.close();// 關閉文件流
}
if (imagePath.toLowerCase().endsWith(".gif"))// 不使用編碼處理文件流的情況:
{
response.setContentType(GIF);
File file = new File(imagePath);
FileInputStream fis = new FileInputStream(file);
ServletOutputStream sos = response.getOutputStream();
byte[] b = new byte[1024];
int n;
int l = 0;
while ((n = fis.read(b)) != -1) {
l = l + n;
sos.write(b, 0, n);
}
response.setContentLength(l);
fis.close();
sos.close();
}
output.close();
}
}
