<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 59,  comments - 323,  trackbacks - 0

      我是豆瓣的會員,又用的是MSN Spaces的BLOG,目前用得還不錯,都不打算退出。但是豆瓣提供的那個豆瓣秀服務,在MSN Spaces上用不成

      沒辦法,只能自己動手了。實際效果,見:http://spaces.msn.com/members/zbw25/

      1、搞一個Custom HTML
      2、在公司的服務器上,裝一個軟件,ImageMagick。下載地址:http://www.imagemagick.org/download/binaries/ImageMagick-6.2.5-4-Q16-windows-dll.exe

      3、下載一個JMagick。下載地址:
    http://www.yeo.id.au/jmagick/quickload/win-6.2.4/jmagick-6.2.4-1-IM-6.2.5.zip

      4、將dll文件,copy到Windows的System32目錄下。將jar文件copy到某lib目錄下。

      5、寫一個Servlet,代碼如下:

      1 package tv.recool.misc;
      2 
      3 import java.io.*;
      4 import java.text.*;
      5 import java.util.*;
      6 import javax.servlet.*;
      7 import javax.servlet.http.*;
      8 import java.net.MalformedURLException;
      9 import java.net.URL;
     10 import java.net.URLConnection;
     11 
     12 import magick.ImageInfo;
     13 import magick.MagickImage;
     14 import magick.MontageInfo;
     15 
     16 public class PutBooks extends HttpServlet {
     17 
     18     //根據url,取得圖片的byte[]
     19     private static byte[] getImageBytes(String url){
     20         try {
     21             return StreamUtils.read((new URL(url)).openStream());
     22         } catch (Exception e) {
     23             return null;
     24         }
     25     }
     26     
     27     //根據url,取得文字
     28     private static String getImageText(String url){
     29         try {
     30             URL u=new URL(url);
     31             URLConnection uc=u.openConnection();
     32 
     33             //要做足功夫,不然豆瓣就會拒絕你的請求
     34             uc.setRequestProperty("Host","www.douban.com");
     35             uc.setRequestProperty("Accept","*/*");
     36             uc.setRequestProperty("Referer","http://www.douban.com/");
     37             uc.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)");
     38             uc.setRequestProperty("Pragma","no-cache");
     39             uc.setRequestProperty("Cache-Control","no-cache");
     40             uc.setRequestProperty("Connection","close");
     41 
     42             //StreamUtils是一個輔助工具,就不再給出了
     43             return new String(StreamUtils.read(uc.getInputStream()),"utf-8");
     44         }  catch (Exception e) {
     45             return "";
     46         }
     47     }
     48 
     49     public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
     50         //取得參數
     51         String uid=req.getParameter("uid");
     52         String n=req.getParameter("n");
     53         String columns=req.getParameter("columns");
     54         String select=req.getParameter("select");
     55         String picsize=req.getParameter("picsize")+"";
     56         String show=req.getParameter("show");        
     57 
     58         try {
     59             //設置JMagick的ClassLoader,否則會報錯
     60             System.setProperty("jmagick.systemclassloader","no");
     61 
     62             String str= getImageText("http://www.douban.com/service/badge/"+
     63                 uid+"/?show="+show
     64                 +"&select="+select
     65                 +"&n="+n
     66                 +"&picsize="+picsize
     67                 +"&columns="+columns);
     68 
     69             int getSize=Integer.parseInt(n);
     70             int colSize=Integer.parseInt(columns);
     71             int len=getSize/colSize;
     72 
     73             //申請一個數組
     74             MagickImage images[] = new MagickImage[getSize];
     75 
     76             //用最簡單的辦法解析字符串,因為豆瓣的輸出是固定的
     77             String imgstr[]=str.split(".jpg");
     78 
     79             for(int i=0;i<getSize;i++){
     80                 if(i<imgstr.length){
     81                     String picurl="";
     82 
     83                     //根據圖片大小的設定,解析有所不同
     84                     if(picsize.equals("medium")){
     85                         String temps[]=imgstr[i].split("http://www.douban.com/mpic/");
     86                         picurl="http://www.douban.com/mpic/"+temps[1]+".jpg";
     87                     } else {
     88                         String temps[]=imgstr[i].split("http://www.douban.com/spic/");
     89                         picurl="http://www.douban.com/spic/"+temps[1]+".jpg";
     90                     }
     91                     MagickImage image = new MagickImage(new ImageInfo(),getImageBytes(picurl));
     92                     images[i]=image;
     93                 }
     94             }
     95 
     96             //建立一個圖片組
     97             MagickImage seqImage = new MagickImage(images);
     98 
     99             //建立一個圖片框架
    100             MontageInfo montageInfo = new MontageInfo(new ImageInfo());
    101 
    102             //setGeometry(String)設置圖片的幾何特征
    103             if(picsize.equals("medium")){
    104                 montageInfo.setGeometry("99x149+1+1>");
    105             } else {
    106                 montageInfo.setGeometry("66x99+1+1>");
    107             }
    108 
    109             //NxM的一個表格
    110             montageInfo.setTile(colSize+"x"+len);
    111             montageInfo.setBorderWidth(0);
    112 
    113             //得到一張組合后的圖片
    114             MagickImage montage = seqImage.montageImages(montageInfo);
    115             montage.writeImage(new ImageInfo());
    116             montage.setMagick("JPG");
    117 
    118             //輸出到byte[]
    119             byte data[]=montage.imageToBlob(new ImageInfo());
    120 
    121             //通過Servlet輸出
    122             res.setContentType("image/*");
    123             OutputStream toClient=res.getOutputStream();
    124             toClient.write(data);
    125             toClient.close();
    126         }
    127         catch (Exception ex) {
    128         }
    129     }
    130 }


      6、在MSN Spaces的Custom HTML中,寫以下HTML:

    <href="http://www.douban.com/people/1019112/"><img src="http://www.recool.tv:8080/Recool-WebServer/putBooks?uid=1019112&show=collection&select=random&n=12&columns=3" border=0 width=178></a>

      7、搞定,收工。

    posted on 2005-11-14 21:20 讀書、思考、生活 閱讀(1247) 評論(2)  編輯  收藏


    FeedBack:
    # re: 干成一樁大事
    2005-11-14 21:32 | calvin
    MSN space不讓人貼JS真不爽阿。
    看圖識字學會ImageMagick:)  回復  更多評論
      
    # re: 干成一樁大事
    2005-11-14 23:48 | scud(飛云小俠)
    突然覺得這個文章好像看過一遍...原來老莊有新家了  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2005年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿(20)

    隨筆檔案

    友情BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 97国免费在线视频| 无人视频免费观看免费视频| a在线观看免费网址大全| 小小影视日本动漫观看免费| 色在线亚洲视频www| 亚洲视频免费一区| 内射干少妇亚洲69XXX| 精品无码无人网站免费视频| 久久亚洲精品成人综合| 污视频在线观看免费| 亚洲精品成人av在线| 91福利视频免费观看| 亚洲免费二区三区| 三年片在线观看免费大全| 亚洲娇小性xxxx| 久久久久国色AV免费看图片| 亚洲欧洲免费无码| 亚洲?v女人的天堂在线观看| 深夜免费在线视频| 亚洲伊人成无码综合网| 国产性生大片免费观看性 | 老司机69精品成免费视频| 亚洲线精品一区二区三区影音先锋| 国产黄在线播放免费观看| 亚洲乱码一区二区三区在线观看| 免费黄色电影在线观看| 亚洲国产精品人久久电影| 性做久久久久久免费观看| 老牛精品亚洲成av人片| 亚洲最大激情中文字幕| 免费国产黄网站在线观看可以下载 | 亚洲精品无码av人在线观看| 久久午夜夜伦鲁鲁片无码免费| 亚洲一区二区三区91| 国产成人免费A在线视频| 免费播放在线日本感人片| 亚洲免费黄色网址| 免费又黄又爽的视频| 日日麻批免费40分钟无码 | 亚洲一区二区三区自拍公司| 99热在线免费播放|