1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      實(shí)現(xiàn)圖像反轉(zhuǎn)java代碼 java圖片旋轉(zhuǎn)代碼

      Java怎么讓我的圖片反轉(zhuǎn)。我已經(jīng)設(shè)置好按鈕和監(jiān)聽器了。但是不會(huì)反轉(zhuǎn),只要九十度就可以了

      /**

      創(chuàng)新互聯(lián)是專業(yè)的遠(yuǎn)安網(wǎng)站建設(shè)公司,遠(yuǎn)安接單;提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行遠(yuǎn)安網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

      ?*?旋轉(zhuǎn)圖像為指定角度

      ?*?

      ?*?@param?degree

      ?*?@return

      ?*/

      public?static?BufferedImage?rotateImage(final?Image?image,

      final?int?angdeg,?final?boolean?d)?{

      int?w?=?image.getWidth(null);

      int?h?=?image.getHeight(null);

      BufferedImage?img;

      Graphics2D?graphics2d;

      (graphics2d?=?(img?=?createImage(w,?h,?true))

      .createGraphics()).setRenderingHint(

      RenderingHints.KEY_INTERPOLATION,

      RenderingHints.VALUE_INTERPOLATION_BILINEAR);

      graphics2d.rotate(d???-Math.toRadians(angdeg)?:?Math.toRadians(angdeg),

      w?/?2,?h?/?2);

      graphics2d.drawImage(image,?0,?0,?null);

      graphics2d.dispose();

      return?img;

      }

      g.drawImage(rotateImage(image,90,true),?371,?56,?122,?223,?null);

      java 怎么讓一個(gè)圖形繞一個(gè)點(diǎn)旋轉(zhuǎn)360度

      import?java.awt.Canvas;

      import?java.awt.Graphics;

      import?java.awt.Graphics2D;

      import?java.awt.RenderingHints;

      import?java.awt.image.BufferedImage;

      /**

      *?@author?ZhengYesheng

      */

      public?class?RotateImageCanvas?extends?Canvas?implements?Runnable

      {

      private?static?final?long?serialVersionUID?=?-1997487731464495923L;

      BufferedImage?img;

      BufferedImage?rotatedImg;

      int?degress?=?0;

      public?RotateImageCanvas(BufferedImage?img)

      {

      super();

      this.img?=?img;

      new?Thread(this).start();

      }

      @Override

      public?void?run()

      {

      while?(true)

      {

      //A,與B的代碼配合決定旋轉(zhuǎn)的速度

      degress?+=?1;

      degress?%=?360;

      repaint();

      try

      {

      if?(degress?==?0)

      {

      //繞一周后等待的時(shí)間在這里設(shè)置

      Thread.sleep(3?*?1000);

      }

      else

      {

      //考慮到視覺平滑,這里不應(yīng)大約40。

      Thread.sleep(30);

      }

      }

      catch?(InterruptedException?e)

      {

      //?TODO?Auto-generated?catch?block

      e.printStackTrace();

      }

      }

      }

      @Override

      public?void?paint(Graphics?graphics)

      {

      super.paint(graphics);

      //獲取旋轉(zhuǎn)指定角度后的圖片。為了避免累計(jì)誤差,這里是用原始圖像旋轉(zhuǎn)的

      rotatedImg?=?rotateImage(img,?degress);

      //繪制旋轉(zhuǎn)后的圖片

      graphics.drawImage(rotatedImg,?0,?0,?this);

      }

      /**

      *?旋轉(zhuǎn)圖片為指定角度。

      *?注意:1、這個(gè)方法實(shí)現(xiàn)了圖像的基于中點(diǎn)的旋轉(zhuǎn),要想繞指定點(diǎn),需要配合Matrix類

      *??????????2、為避免圖像被裁切,結(jié)果圖片的尺寸也需要?jiǎng)討B(tài)計(jì)算

      *??????????3、現(xiàn)在旋轉(zhuǎn)后有黑色背景,如果不需要這個(gè)效果,需要設(shè)置結(jié)果圖片的Alpha模式

      *?

      *?@param?bufferedimage

      *????????????目標(biāo)圖像

      *?@param?degree

      *????????????旋轉(zhuǎn)角度

      *?@return

      */

      private?BufferedImage?rotateImage(BufferedImage?bufferedimage,?int?degree)

      {

      int?w?=?bufferedimage.getWidth();

      int?h?=?bufferedimage.getHeight();

      int?type?=?bufferedimage.getColorModel().getTransparency();

      BufferedImage?img;

      Graphics2D?graphics2d;

      (graphics2d?=?(img?=?new?BufferedImage(w,?h,?type)).createGraphics())

      .setRenderingHint(RenderingHints.KEY_INTERPOLATION,?RenderingHints.VALUE_INTERPOLATION_BILINEAR);

      graphics2d.rotate(Math.toRadians(degree),?w?/?2,?h?/?2);

      graphics2d.drawImage(bufferedimage,?0,?0,?null);

      graphics2d.dispose();

      return?img;

      }

      }

      java 圖像翻轉(zhuǎn) 。。求解釋 代碼??!

      在操作二維或三維的圖形圖像上,長期以來人們總結(jié)出了一些常用的變換矩陣,這些矩陣就像公式和定理一樣被開發(fā)人員使用,樓主可以把這些矩陣當(dāng)成公式來記憶,就像我們小時(shí)候背加法、乘法口訣一樣。

      如果樓主想了解得更深入一些,請(qǐng)往下看:

      [?x']???[??m00??m01??m02??]?[?x?]???[?m00x?+?m01y?+?m02?]

      [?y']?=?[??m10??m11??m12??]?[?y?]?=?[?m10x?+?m11y?+?m12?]

      [?1?]???[???0????0????1???]?[?1?]???[?????????1?????????]

      上面的式子是jdk文檔中復(fù)制過來的,就是變換時(shí)的運(yùn)算過程,也就是說變換后的坐標(biāo)x'、y'是由一個(gè)3*3的矩陣與原坐標(biāo)x、y相乘得出的,其中的m00~m12就是AffineTransform構(gòu)造方法中的六個(gè)參數(shù),另外,式子中的最后一行是固定的。

      矩陣乘法就不用說了吧,最后得出的結(jié)果就是上式中的最后一列,可能寫成下面這樣會(huì)更容易理解:

      x'?=?m00x?+?m01y?+?m02

      y'?=?m10x?+?m11y?+?m12

      看出什么了嗎?其實(shí)這就是二維平面直角坐標(biāo)系中的兩個(gè)很簡單的二元一次方程而已,方程定義的就是橫縱坐標(biāo)變換的規(guī)則。

      以水平翻轉(zhuǎn)為例,水平翻轉(zhuǎn)是以圖形/圖像的垂直中線為軸來翻轉(zhuǎn)的,因此任何一個(gè)點(diǎn)(x,y)變換后的坐標(biāo)應(yīng)該是y坐標(biāo)不變,x坐標(biāo)變?yōu)?x+width-1,即(-x+width-1,y),之所以減1是因?yàn)榇怪敝休S上的點(diǎn)不應(yīng)該改變。

      理解了上面的變換過程之后,將結(jié)果帶入上面的兩個(gè)二元一次方程,可以得出

      m00=-1、m01=0、m02=width-1

      m10=0、m11=1、m12=0

      正好是你給的代碼中的六個(gè)值(AffineTransform構(gòu)造方法中的參數(shù)順序?yàn)閙00、m10、m01、m11、m02、m12)

      其他幾個(gè)變換道理是一樣的


      當(dāng)前名稱:實(shí)現(xiàn)圖像反轉(zhuǎn)java代碼 java圖片旋轉(zhuǎn)代碼
      分享網(wǎng)址:http://ef60e0e.cn/article/hgoedh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        库尔勒市| 纳雍县| 成武县| 溧阳市| 龙川县| 尼木县| 烟台市| 道真| 南岸区| 鲁甸县| 湘潭市| 健康| 永济市| 旅游| 无为县| 古丈县| 邹城市| 林甸县| 沂水县| 珠海市| 荆门市| 蓬溪县| 团风县| 恭城| 望城县| 望城县| 石景山区| 唐河县| 古浪县| 疏附县| 黄陵县| 吉安市| 吴堡县| 宣威市| 固安县| 和平区| 阜新| 呼玛县| 张家港市| 安阳县| 汉阴县|