java网上抓取图片

public class GameBaikeBackgroundInfoQ
TAction extends BaseAction{
    privatestatic final Log log =LogFactory.getLog(GameBaikeBackgroundInfoQTAction.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
         theGameBaikeBackgroundInfoMgrInf.insertGameBaikeBackgroundInfo(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.getImageWritersByFormatName("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、付费专栏及课程。

余额充值