java网上抓取图片

public class GameBaikeBackgroundInfoQ
TAction  extends BaseAction{
      privatestatic final Log log =LogFactory.getLog(GameBaikeBackgroundInfoQ TAction.class);
      publicActionForward saveBaikeBackground(ActionMapping mapping, ActionFormform, HttpServletRequest request,HttpServletResponseresponse){
                //。。。。。。
                //从string中提取图片 start chc add 2011//02/17
                  //保存到本地,并用本地图片地址替换网络图片地址
                  String reg ="<img.+?src=["|\'](.+?)["|\']";
                  Stringbackground =gameBaikeBackgroundInfo.getBackGround().replaceAll("\r\n","").replaceAll("\n", "");//游戏介绍(背景)
                  Patternpattern = Pattern.compile(reg);
                  Matchermatcher = pattern.matcher(background);
                  List<String> list = newArrayList<String>();//放图片的src地址
                  Map<String,String> imgMap = newHashMap<String,String>();//key:网络图片地址,value:本地图片地址
                 
                  Set<String> imgSrcSet = newHashSet<String>();
                 
                  while(matcher.find()){
                        StringfullFileName = matcher.group(1);
                        System.out.println("==============="+fullFileName);
                        imgMap.put(fullFileName,"<#srchttp_"+fullFileName+"#>");
                        list.add(fullFileName);
                  }
                  for(inti=0;i<list.size();i++){
                        imgSrcSet.add(list.get(i));
                  }
                 
                  for(Stringstr:imgSrcSet){
                        Imageimg=ImageIO.read(new URL(str));
                        StringsrcName = str.substring(str.lastIndexOf(".")+1);//文件扩展名
                        StringwebPath =GlobalParameter.getValue("gameData")+"/"+gameInfo.getGameCode()+"/background_img";//相对路径
                          StringlogoFileDir =GlobalParameter.getValue("basePath")+webPath;//绝对路径
                          StringlogoFileName = UUID.randomUUID().toString()+"."+srcName;//文件名
                          FilefileDirs = new File(logoFileDir);//创建目录
                        if (!fileDirs.isDirectory() ){
                              fileDirs.mkdirs();
                        }
                         
                          //img 转成BufferedImage start
                          BufferedImage bi = newBufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
                          Graphics2DbiContext = bi.createGraphics();
                          biContext.drawImage(img,0,0,null);
                          //img 转成BufferedImage end
                          PhotoUtil.createSmallPicture(bi, newFile(logoFileDir+"/"+logoFileName), img.getWidth(null),img.getHeight(null));
                          imgMap.put(str,GlobalParameter.getValue("qturl")+webPath+"/"+logoFileName);
                  }
                  for(inti=0;i<list.size();i++){
                        background =background.replaceAll(list.get(i), imgMap.get(list.get(i)));
                  }
                 
                  gameBaikeBackgroundInfo.setBackGround(background);
                  HttpSessionsession = request.getSession();
                  session.setAttribute("newReason",gameBaikeBackgroundInfo.getReason().replaceAll("<","&lt").replaceAll(">","&gt"));
                  session.setAttribute("newRefUrl",gameBaikeBackgroundInfo.getRefURL());
                  session.setAttribute("newBackground", background);
                  //end  2011/01/09 chc add
                  theGameBaikeBackgroundIn foMgrInf.insertGameBaikeBackgroun dInfo(gameBaikeBackgroundInfo);
    }
}

public class PhotoUtil {
     
     
      privatestatic org.apache.log4j.Logger logger =org.apache.log4j.Logger.getLogger(PhotoUtil.class.getName());
///
      //功能的简述:缩图处理.
      // @paramsrcPicFile 原图文件
      // @paramdestPicFile 缩图处理后的图片文件
    //@paramminiWidth    缩略图的宽度限制
      // @paramminiHeight  缩略图的高度限制
      //@return  返回是否成功.
      //
//public static boolean createSmallPicture(File srcPicFile, FiledestPicFile,int miniWidth,int miniHeight) {
      publicstatic boolean createSmallPicture(BufferedImage srcBi, FiledestPicFile,int miniWidth,int miniHeight) {

              try {
//                      BufferedImage srcBi = ImageIO.read(srcPicFile);
                      int srcH = srcBi.getHeight();
                      int srcW = srcBi.getWidth();
                      double scale = (srcW / ((double) miniWidth)) > (srcH/ ((double) miniHeight)) ? (srcW / ((double) miniWidth)) : (srcH /((double) miniHeight));
                      int destW = (int) (srcW / scale);
                      int destH = (int) (srcH / scale);
                      if ((destW > srcW) || (destH > srcH)){
                              destW = srcW;
                              destH = srcH;
                      }
                      BufferedImage newImg = new BufferedImage(srcW, srcH,BufferedImage.TYPE_INT_RGB);
                      newImg.createGraphics().drawImage(srcBi, 0, 0, srcW, srcH,null);
                      Iterator<ImageWriter> iter =ImageIO.getImageWritersByFormatN ame("jpg");
                      if (iter.hasNext()) {
//                              writer = iter.next();
                      } else {
                              throw new IOException("no ImageWriter for jepg");
                      }
 
                      InFocusPhoto ifp=new InFocusPhoto();//调用图象缩放方法
                  BufferedImage tag =ifp.imageZoomOut(newImg,destW,destH);
                 
                  FileOutputStream out=newFileOutputStream(destPicFile);                  //输出到文件流
                  JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);           
                  encoder.encode(tag);
                 
                  out.flush();
                  out.close();

                      return true;
              } catch (IOException e) {
                      e.printStackTrace();
                      logger.error(e.getMessage(), e);
                      return false;
              }

      }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值