java通过http的图片地址获取图片并保存

本文介绍了一种使用Java编程语言获取网络上具有防盗链保护的图片的方法,包括解析URL、伪装HTTP头部以反盗链、读取图片流、保存到本地并返回保存路径。
有时我们会遇到用java编程获取网络上一幅图片的问题,经常是,我写了下面的函数,可以在web的程序中使用,而且它还可以获取具有防盗链功能的图片
public static String getImgFromUrl(String urlstr, Stringsavepath)
 
   {
      int num = urlstr.indexOf('/',8);
      int extnum = urlstr.lastIndexOf('.');
      String u = urlstr.substring(0,num);
      String ext =urlstr.substring(extnum+1,urlstr.length());
      try{
         long curTime = System.currentTimeMillis();
         Random random = new Random(100000000);
         String fileName = String.valueOf(curTime) +"_"
               + random.nextInt(100000000) + ext;
         // 图片的路径
         String realPath = AppConstants.ROOTPATH +savepath;
         
          URL url =new URL(urlstr);
         URLConnection connection = url.openConnection();
         connection.setDoOutput(true);
         connection.setRequestProperty("referer",u);      //通过这个http头的伪装来反盗链
         BufferedImage image =ImageIO.read(connection.getInputStream());
         FileOutputStream fout=newFileOutputStream(realPath+fileName);
          if("gif".equals(ext)||"png".equals("png"))
          {
              ImageIO.write(image, ext, fout);
          }
          ImageIO.write(image, "jpg", fout);
         fout.flush();
         fout.close();
                
          returnsavepath+fileName;
           
      catch(Exception e)
       {
         System.out.print(e.getMessage().toString());
       }
       return"";
    }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值