как отобразить или использовать изображение, полученное с телефона Android, на сервере

#java #android #image #jakarta-ee #servlets

#java #Android #изображение #джакарта-ee #сервлеты

Вопрос:

Я отправляю изображение с телефона Android на сервер, который его использует, но теперь я не понимаю, как использовать изображение на сервере

мой код для телефона Android, который отправляет изображение,

                             Log.i("sAMPLE","Info:" );
                //String postURL = HOST_SERVER_URL   HOST_PHOTO_UPLOAD_URI;
                String postURL ="http://10.0.2.2:8080/SimpleServlet/simple-servlet";//server URL
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost postRequest = new HttpPost(postURL);

                ByteArrayBody bab = new ByteArrayBody(imageBytes, "file_name_ignored");
                MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
                reqEntity.addPart("source", bab);
                postRequest.setEntity(reqEntity);

                HttpResponse response = httpClient.execute(postRequest); 
 

и мой код, который обрабатывает изображение на сервере, выглядит следующим образом

         protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(req);
    System.out.println("Before Mutlipart");
    if(!isMultipart)
        throw new ServletException("upload using multipart");

    ServletFileUpload upload = new ServletFileUpload(fif);
    upload.setSizeMax(1024 * 1024 * 10 /* 10 mb */);
    List<FileItem> items;
    try {
        items = upload.parseRequest(req);
    //}// catch (FileUploadException e) {
      //  throw new ServletException(e);
    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        throw new ServletException(e);
    }

    if(items == null || items.size() == 0)
        throw new ServletException("No items uploaded");

    FileItem item = items.get(0);
    //BufferedImage Img=item.getString();
    System.out.println(item.getContentType());
    byte[]data=item.get();
 

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

Комментарии:

1. как я должен использовать данные, полученные с телефона на сервлете, в качестве изображения, чтобы я мог его редактировать .. полученное изображение находится в переменной item

2. Что вы подразумеваете под его редактированием? Вы хотите обрезать?, изменить размер? Манипулировать?

3. манипулировать .. я хочу добавить к нему текстовое описание..

4. Просто чтобы быть уверенным; Вы хотите изменить изображение, поместив на него текст. Например, имя, нижний колонтитул с авторским правом или что-то в этом роде в углу или что-то в этом роде? Что вы хотите с ним сделать потом? Сохранить его на диске? Отобразить его обратно пользователю, который его опубликовал?

5. после добавления некоторого описания мне нужно отправить его обратно в приложение phone, которое разместит его на facebook

Ответ №1:

Я думаю, это должно сработать для вас…

http://www.mkyong.com/java/how-to-convert-byte-to-bufferedimage-in-java/

на стороне сервера (imageInByte — это ваши данные [])…

 //convert byte array back to BufferedImage
InputStream in = new ByteArrayInputStream(imageInByte);
BufferedImage bImageFromConvert = ImageIO.read(in);

ImageIO.write(bImageFromConvert, "jpg", 
         new File("c:\image\mypic_new.jpg"));