#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"));