java显示图片

1、base64编码显示;但是尽量避免使用该方式,因为可能存在丢失内容情况;

2、使用servlet获取图片,以流的形式显示。serlvet路径最好带个随机数,防止页面缓存问题。

 

方法1:

        byte[] data = getImageStr(bean.getImgPath());
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        String imgStr = "";
        if(data!=null){
            try {
                imgStr ="data:image/jpg;base64," + encoder.encode(data) + "";
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

 

    /**
     * 图片转化成base64字符串
     * 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
     * @param path
     * @return
     */
    public static byte[] getImageStr(String path) {
        if (!new File(path).exists()) {
            return null;
        }
        InputStream in = null;
        byte[] data = null;
        // 读取图片字节数组
        try {
            in = new FileInputStream(path);
            data = new byte[in.available()];
            in.read(data);
            in.close();
            // 对字节数组Base64编码
//            BASE64Encoder encoder = new BASE64Encoder();
//            return encoder.encode(data); // 返回Base64编码过的字节数组字符串
            return data; // 返回Base64编码过的字节数组字符串
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

 

<img src='"+imgStr+"' style='width:112px;height:125px;'/>

 

 

方法2:

   java.util.Random random=new java.util.Random();// 定义随机类
    int ran = random.nextInt(10);// 返回[0,10)集合中的整数,注意不包括10

"<img src='/XX(项目名)/zpservlet?n="+ran+"&path="+bean.getImgPath()+"' style='width:112px;height:125px;'/>"

 

     /**
     * 文件路径
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
      public void doGet(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException,
                                                             IOException {
          response.setContentType(CONTENT_TYPE);
          request.setCharacterEncoding("UTF-8");
          String path = request.getParameter("path");
          System.out.println("path:"+path);
          InputStream in = null;
          OutputStream out = null;
          
              if(path != null && !"".equals(path)){
                  File outputFile = new File(path);
                  if (outputFile.exists() && outputFile.length() > 0) {
                      in = new FileInputStream(outputFile);
                      out = response.getOutputStream();
                      IOUtils.copy(in, out);
    //                      byte[] buffer = new byte[1024];
    //                      int read = -1;
    //                          while ((read = in.read(buffer)) != -1) {
    //                          out.write(buffer, 0, read);
    //                      }
                      out.close();
                     // if(in!=null)in.close();
                  } else {
                      System.out.println("找不到文件:" + outputFile.getName());
                  }
              } 
              
          }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值