Передача изображения между серверами для удаленного сохранения - PullRequest
0 голосов
/ 29 сентября 2011

Приложение My Spring передает файл изображения в приложение Jersey, чтобы избавиться от всех задач по обработке изображений.

При получении изображения приложение Jersey должно сохранить изображение после нескольких манипуляций (обрезать, изменить размер и т. Д.) И вернуть изображениеurl.

Для этого приложение Spring имеет следующую форму в файле JSP:

<form method="POST" action="/asdf" enctype="multipart/form-data">
    <input type="file" name="fstream"></input>
    <input type="submit" value="Upload"/>
</form>

В моем контроллере Spring я получаю DataInputString, используя:

DataInputStream in = new DataInputStream(request.getInputStream());

Каков будет простой подход для выполнения желаемого действия, упомянутого выше?Как насчет преобразования его в приложение BufferedImage в Spring, POST его в приложение Jersey, выполнение необходимых манипуляций и сохранение изображения?

Если это нормально, как мне преобразовать DataInputStream в BufferedImage?

Заранее спасибо.

1 Ответ

2 голосов
/ 11 ноября 2011

Поскольку ответа не было ...

  1. Я получил байтовый массив из отправленных данных формы
  2. Отправил объект с байтом [], являющимся одним из атрибутов REST-серверу
  3. На стороне сервера я преобразовал byte [] в BufferedImage, который я масштабировал (используя ImgScalr API) по мере необходимости, и сохранил его.

@ Path ("/ image") открытый классImageController {

@PUT
@Path("upload/{fileName}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response upload(@PathParam("fileName") String fileName, FileBytes fileBytes){
    byte[] bytearray = fileBytes.getFileBytes();
    int len = bytearray.length;
    if(len>0){
        try {
            int width=0, height=0, edge=0, px1=0, px2=0;
            InputStream in = new ByteArrayInputStream(bytearray);
            BufferedImage image = ImageIO.read(in);

            File file = new File(Constants.PATH_TO_IMAGES+Constants.PATH_ORIGINAL+fileName+".jpg");
            ImageIO.write(image, "png", file); //saving original image

            width = image.getWidth();
            height = image.getHeight();

                            //scaling as required
            if(height>width){
                px2 = (height-width)/2+1;
                edge = width;
            }else if(width>height){
                px1 = (width-height)/2+1;
                edge = height;
            }else{
                edge = width;
            }

                            //using ImgScalr API to get scaled image
            image = image.getSubimage(px1, px2, edge, edge);                
            image = Scalr.resize(image, 120);
            file = new File(Constants.PATH_TO_IMAGES+Constants.PATH_THUMBNAIL+fileName+".jpg");
            ImageIO.write(image, "png", file); //saving scaled image
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return Response.status(Status.OK).entity("Filename:"+fileName).build();     
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...