2014-12-03 2 views
0

Я пытаюсь использовать прогрессивное изображение для загрузки на сайт. Я начинаю и понятия не имею, как получить прогрессивное изображение!Прогрессивное изображение

В принципе мы можем преобразовать нормальное загруженное изображение в прогрессивное изображение с помощью 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++){ 
      ;; 
     } 

    } 
} 

}

+1

Чтобы проверить, убедитесь, что изображение не кэшируются: '» ... .jpg? x = "+ System.currentTimeMillis()'. И для тестирования, возможно, сделайте свой собственный сервлет доставки, который замедляет загрузку изображения: может быть, флеш после каждых 16 байтов. –

+0

Спасибо за ответ. Я убеждаюсь, что он не кэширован. Возможно, у вас больше идеи относительно доставки сервлета, который замедляет загрузку изображения? Потому что это то, что я ищу .. – vicky

+1

Технический термин для преднамеренного замедления ** throtling **, общий как фильтр сервлета, чтобы обеспечить массовую загрузку без DoS-уязвимости. Вероятно, проще всего начинать писать сервлет самостоятельно: путь изображения как param, 'getRealPath ("/images/x.jpg ")' FileInputStream, каждый тысячный байт 'flush()', возможно, даже 'Thread.sleep (500) '. –

ответ

1

изображения уже делают постепенно в веб-браузере - но вы можете сделать еще лучше. Просто сохраните GIF или PNG изображения с «чересстрочным» вариантом, или ваши изображения в формате JPEG с «прогрессивным» вариантом

references here

Смежные вопросы