java通过http的图片地址获取图片并保存
2011-12-26 09:38
309 查看
有时我们会遇到用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"";
}
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"";
}
相关文章推荐
- 通过HttpWebResponse和HttpWebRequest 获取http地址上的图片
- java 通过网络地址获取图片宽高
- QT中通过HTTP URL获取并保存网页上的图片
- java分别通过httpclient和HttpURLConnection获取图片验证码内容
- 通过HttpURLConnection获取网页图片 并保存至内存卡的例子
- java通过代理获取网络图片,截取当前屏幕保存为图片
- java 平均分割图片到文件,与Http获取网络图片的一部分,用于用户的默认头像获取
- 通过HTTP方式获取URL返回结果数据(Java)
- 通过ajaxFileUpload控件上传图片,java后台接收并保存本地
- qt 通过http获取网络图片并且显示
- Java获取URL地址图片
- 前台js(canvas)生成图片,通过后台java进行保存
- Java上传图片到服务器路径获取系列之--图片保存到Tomcat的webapps目录下
- Java 通过HttpRequest获取请求用户真实IP地址
- ios通过URL地址,从网络上获取图片
- 通过http地址获取页面内容
- 通过Java HTTP连接将网络图片下载到本地
- 死亡历险,Delphi以Json方式一次传递多张图片通过WebService到Java保存
- Java实现Flash请求的二进制流图片保存并返回XML信息包含图片访问地址