Я пытаюсь использовать прогрессивное изображение для загрузки на сайт. Я начинаю и понятия не имею, как получить прогрессивное изображение!Прогрессивное изображение
В принципе мы можем преобразовать нормальное загруженное изображение в прогрессивное изображение с помощью java? Если да, предоставьте некоторое представление или любые ссылки. Основная цель - сделать большое изображение.
Спасибо
Вот как мой сервлет выглядит
пакет com.throttle.images;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ImagingServlet
*/
public class ImagingServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ImagingServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/jpg");
ServletOutputStream out;
out = response.getOutputStream();
String name = request.getParameter("name");
FileInputStream fin = new FileInputStream("system file path"+name);
System.out.println(name);
BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(out);
int ch =0; ;
while((ch=bin.read())!=-1)
{
bout.write(ch);
bout.flush();
//out.flush();
//delay();
//response.flushBuffer();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
void delay(){
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
;;
}
}
}
}
Чтобы проверить, убедитесь, что изображение не кэшируются: '» ... .jpg? x = "+ System.currentTimeMillis()'. И для тестирования, возможно, сделайте свой собственный сервлет доставки, который замедляет загрузку изображения: может быть, флеш после каждых 16 байтов. –
Спасибо за ответ. Я убеждаюсь, что он не кэширован. Возможно, у вас больше идеи относительно доставки сервлета, который замедляет загрузку изображения? Потому что это то, что я ищу .. – vicky
Технический термин для преднамеренного замедления ** throtling **, общий как фильтр сервлета, чтобы обеспечить массовую загрузку без DoS-уязвимости. Вероятно, проще всего начинать писать сервлет самостоятельно: путь изображения как param, 'getRealPath ("/images/x.jpg ")' FileInputStream, каждый тысячный байт 'flush()', возможно, даже 'Thread.sleep (500) '. –