<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

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人午夜影视全部免费看| 免费国产va视频永久在线观看| 国产成人精品日本亚洲专区6| 亚洲精品综合在线影院| 国产青草亚洲香蕉精品久久| 久久久WWW免费人成精品| 久久99国产综合精品免费| 成全视频免费高清| 亚洲人成网站色在线入口| 亚洲色无码专区在线观看| 亚洲视频网站在线观看| 亚洲精品日韩一区二区小说| 国产精品免费看久久久香蕉| 91短视频在线免费观看| 成人永久福利免费观看| 亚洲色精品vr一区二区三区| 亚洲图片校园春色| 无码的免费不卡毛片视频| 七色永久性tv网站免费看| 天天看片天天爽_免费播放| 久久亚洲av无码精品浪潮| 亚洲欧洲高清有无| 黄色a三级三级三级免费看| 久久久久久久久久国产精品免费| 久久不见久久见免费影院| 色噜噜AV亚洲色一区二区| 亚洲伊人色一综合网| 一级做a爰片久久毛片免费陪| 97视频免费观看2区| 亚洲 国产 图片| 久久精品国产亚洲AV电影| 国产精品亚洲色婷婷99久久精品| 无码中文字幕av免费放dvd| 日韩毛片免费在线观看| 久久亚洲精品成人综合| 亚洲av永久无码天堂网| 99久久精品免费视频| 国产L精品国产亚洲区久久| 亚洲娇小性xxxx色| 光棍天堂免费手机观看在线观看| 成人免费无码大片A毛片抽搐|