java通过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、付费专栏及课程。

余额充值