摘选与别人博客:
package com.test;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Random;
import javax.imageio.ImageIO;
public class HttpGetImage {
/**
* @param args
* @throws Exception
*/
public static String getImgFromUrl(String urlstr, String savepath)
{
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 ="d:/";
URL url = new URL(urlstr);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);//URL连接可以用于输入输出。将doOutput标签设置为true表示应用将向URL连接中写入数据,默认为false
connection.setRequestProperty("referer", u); //通过这个http头的伪装来反盗链
BufferedImage image = ImageIO.read(connection.getInputStream());
FileOutputStream fout=new FileOutputStream(realPath+fileName);
if("gif".equals(ext)||"png".equals(ext))
{
ImageIO.write(image, ext, fout);
}
ImageIO.write(image, "jpg", fout);
//gif格式图片要write两次,否则生成不了图片,不理解,望后来人指教。
fout.flush();
fout.close();
return savepath+fileName;
}
catch(Exception e)
{
System.out.print(e.getMessage().toString());
}
return "";
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.out.println(getImgFromUrl("http://c.csdn.net/bbs/t/5/i/pic_logo.gif","d:/"));
}
}