Servlet以流的形式返回圖片


代碼:

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();
	}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM