springmvc读取数据库中图片的二进制流

来源:互联网 发布:calibre是什么软件 编辑:程序博客网 时间:2024/05/06 07:22

前台页面

<inputtype="file" name="file" class="projectfile"value="/rest/advertisement/getPhoto?id=$!{advertisementVo.id}"/>

或者这种方式 <imgsrc="/rest/advertisement/getPhoto?id=$!{advertisementVo.id}"alt="">

后台controller中的代码

/**

 * 获取图片展示

 *@author zhangchunlei

 * 2017年11月10日

 * @paramid

 * @paramresponse

 *@throws IOException

 */

@RequestMapping(value="/getPhoto",method=RequestMethod.GET)

    public void getPhotoById(@RequestParam(required=true)Long id, final HttpServletResponse response){ 

        try{

               int width = 800;

               int height = 300;

               AdvertisementVo advertisementVo =advertisementService.findById(id);

               if(!CheckUtil.isNull(advertisementVo)){

                       byte[] data = advertisementVo.getMessageImage();

                       if (width != 0 && height != 0){ 

                           BufferedImage buffered_oldImage =ImageIO.read(new ByteArrayInputStream(data)); 

                           int imageOldWidth =buffered_oldImage.getWidth(); 

                           int imageOldHeight =buffered_oldImage.getHeight(); 

                           double scale_x = (double) width /imageOldWidth; 

                           double scale_y = (double) height /imageOldHeight; 

                           double scale_xy = Math.min(scale_x,scale_y); 

                           int imageNewWidth = (int)(imageOldWidth * scale_xy); 

                           int imageNewHeight = (int)(imageOldHeight * scale_xy); 

                           BufferedImage buffered_newImage =new BufferedImage(imageNewWidth, imageNewHeight,BufferedImage.TYPE_INT_RGB); 

                           buffered_newImage.getGraphics().drawImage(buffered_oldImage.getScaledInstance(imageNewWidth,imageNewHeight, BufferedImage.SCALE_SMOOTH), 0, 0, null); 

                          buffered_newImage.getGraphics().dispose(); 

                           ByteArrayOutputStream outPutStream= new ByteArrayOutputStream(); 

                           ImageIO.write(buffered_newImage,"jpeg", outPutStream); 

                           data =outPutStream.toByteArray(); 

                       }

                      response.setContentType("image/jpeg"); 

                      response.setCharacterEncoding("UTF-8"); 

                       OutputStream outputSream =response.getOutputStream(); 

                       InputStream in = newByteArrayInputStream(data); 

                       int len = 0; 

                       byte[] buf = new byte[1024]; 

                       while ((len = in.read(buf, 0, 1024)) !=-1) {  

                           outputSream.write(buf, 0,len); 

                       } 

                       outputSream.close();

               }else{

                      logger.info("查询发布内容图片信息不存在,广告Id=" + id);

               }

        }catch(Exception e){

               logger.error("查询发布内容图片信息异常id=" + id , e);

        }

         

    }

阅读全文
0 0
原创粉丝点击