PACS 中使用J2me中任意角度圖片旋轉

av最新网址-日韩精品少妇-wwwxxx黄色-好吊色欧美一区二区三区视频-久久午夜av-日韩每日更新-超碰女-日本免费在线一区-久久久久无码国产精品一区李宗瑞-最新av观看-日本sm一区二区


      獲得積分
      資料庫會員登錄
      搜索: [高級搜索]
      下載首頁 | 資源分類 | 下載排行
      您的位置: 首頁 > PACS/RIS > PACS RIS 實施及方案相關
       
      分類導航
      下載排行
      最新資源
      PACS 中使用J2me中任意角度圖片旋轉
      資源大小:10.79 KB 資源類型:文檔
      下載積分: 1
      更多
      -->
      下載統計:總下載:0,本月下載:0,本周下載:0,今日下載:0
      發表評論 錯誤報告 加入收藏夾
      資源介紹
      J2me中任意角度圖片旋轉(一)(轉載)2007-09-23 12:00原文位置:http://mobile.csdn.net/page/4367e2f2-01b3-4ab9-8ba0-7f6cf90b7974

      作者:pandonix

      日期:2007年9月20日

      版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明

      原文地址:

      http://pandonix.javaeye.com/

        本文主要討論在J2me中如何實現任意角度的圖片旋轉。其實,早在幾年前,minisoyou的BB就已經給出了實現算法,相信做j2me游戲開發的朋友們也都收藏過該算法。本文從圖像旋轉的基本理論出發,詳細討論如何使用實現和優化該算法,希望對旋轉算法感興趣的朋友有幫助。

        基本旋轉算法:

        討論位圖旋轉算法,首先得說說最基本的旋轉算法,即:點的旋轉。相信學過計算機圖形學的朋友們,對該算法不會陌生。

        假設,P(x,y)旋轉t角度后,得到P’(x’,y’),P與P’之間的關系如下:

      (x’,y’) = (x cos(t) + y sin(t),y cos(t) - x sin(t))

        位圖旋轉:

        根據以上算法,可以直觀的想到位圖旋轉算法,即遍歷位圖中的所有像素點,對每個像素點進行旋轉變換。

        但是在j2me中真正實現位圖的旋轉,還需要解決以下幾點問題:

        1、如何獲取圖片的像素數組,且得到的像素值是包含了alpha高位的,換句話說,要支持透明;

        2、由于是任意角度旋轉,旋轉后的圖像尺寸如何計算;

        3、旋轉算法可以優化,提高計算速度;

        4、旋轉得到的像素數組,如何繪制到canvas上;

        5、旋轉后能否直接得到一個Image對象;

        6、旋轉算法都是基于小數運算的,在CLDC1.0的設備上,如何實現旋轉;

        7、旋轉后的圖像是否存在失真;

        J2me中的像素操作

        熟悉j2me的朋友對于問題一的回答應該是肯定的。我們有兩種方法獲取像素數組,一種是使用midp2.0中的getRGB方法,另一種是使用NokiaUI中的getPixels方法,兩種方法各有優缺點。其中,getRGB方法并非所有midp2.0都手機都支持,本人在Nokia6600上面使用該方法就出現問題,除此之外,getRGB只能獲取到8888格式的ARGB像素值,即通常說的256色。而NokiaUI重載了三個getPixels方法,不僅支持8888格式,還支持4444格式,即,可以使用short數組來存儲像素值,而無須使用int數組。

        由于getRGB方法很簡單,參考API文檔就能使用,所以,在此只列出NokiaUI中如何獲取像素數組:

      java 代碼
      public short[] pixelsProduce(Image src)
      {
      int w = src.getWidth();
      int h = src.getHeight();
      short[] _pixels = new short[w * h];
      //創建可變圖像
      Image img = DirectUtils.createImage(w, h, 0);
      Graphics g = img.getGraphics();
      DirectGraphics dg = DirectUtils.getDirectGraphics(g);
      //先將原圖繪制到創建好的可變圖像上
      dg.drawImage(src,0,0,0,0);
      //再獲取該可變圖像的像素數組
      dg.getPixels(_pixels,0, w, 0, 0, w, h,4444);
      return _pixels;
      }

        解決了獲取圖片像素數組的問題,繪制旋轉后的像素數組的問題也迎刃而解了。Midp2.0中,可以使用drawRGB,而NokiaUI中,則使用drawPixels。當然,如果考慮到繪制的效率,可以將像素數組轉化為Image對象,這樣雖然創建時耗費了時間,但是在繪制時,卻比直接繪制像素數組更加有效率。為此,Midp2.0中,可使用Image.createRGBImage方法,而NokiaUI中,則可以采用以下方法來獲取Image對象:

      java 代碼
      public Image createImg(short[] pixels,int _width,int _height)
      {
      //創建可變圖像
      Image img = DirectUtils.createImage(_width, _height, 0);
      Graphics g = img.getGraphics();
      DirectGraphics dg = DirectUtils.getDirectGraphics(g);
      //將像素數組繪制到創建好的可變圖像上
      dg.drawPixels(pixels, true, 0, _width, 0, 0, _width, _height, 0,4444);
      return img;
      下載地址
       下載地址1
      按字母檢索

      下載須知:
      大部份資源無需注冊即可下載
      需要積分的資源要在會員中心注冊會員并用 積分體系中提示的方法賺取積分才能下載。

      免責聲明:
      所有資源只能用于參考學習,不能用于任何商業用途,否則后果自負!