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

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

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

    筆頭。。
    實(shí)踐啟示
    posts - 14,comments - 3,trackbacks - 0
        通過(guò)java2D實(shí)現(xiàn)沿著圖片的某一邊進(jìn)行翻轉(zhuǎn),如沿著左邊、下邊、上邊、右邊翻轉(zhuǎn)圖像,獲得原始圖像以及翻轉(zhuǎn)圖像在一張圖片上的新圖片。
        scale的 AffineTransform矩陣為[sx,0,0],可見(jiàn)scale是對(duì)原圖片的(x,y)像素的點(diǎn)進(jìn)行相乘處理(sx*x,sy*y).
                                     [0,sy,0]
                                     [0,0,1]
        對(duì)于翻轉(zhuǎn)圖片來(lái)說(shuō),如果橫向翻轉(zhuǎn),那么將scale的參數(shù)設(shè)為(-1,1),縱向翻轉(zhuǎn)將參數(shù)設(shè)為(1,-1)
        scale()方法對(duì)于很多熟悉java2d的人經(jīng)常用來(lái)進(jìn)行放大縮小描繪處理,但是scale
        以圖像沿著下邊翻轉(zhuǎn)為例
        BufferedImage imageTmp=null;
        
    int imageWidth=image.getWidth(null);
        
    int imageHeight=image.getHeight(null);
      
        Graphics2D g2
    =(Graphics2D)imageTmp.createGraphics();

        g2.drawImage(image,
    0,0,null);
        
    //翻轉(zhuǎn)描繪,以下邊為準(zhǔn)
        g2.scale(1.0-1.0);
        g2.drawImage(image, 
    0-2*imageHeight, null);
        g2.scale(
    1.0,-1.0);
        g2.dispose();
        其中scale()方法中傳入(1,-1)是以圖片中的(x,y)映射為(x,-y)進(jìn)行描繪,描繪的翻轉(zhuǎn)圖片的左上角的位置為(0,-2*imageHeight)
        對(duì)于其他邊的翻轉(zhuǎn),算法基本相同,注意倆點(diǎn)
    1. 新圖片的尺寸
    2. scale中傳入的參數(shù)
        源碼
     1 import java.awt.Graphics2D;
     2 import java.awt.Image;
     3 import java.awt.image.BufferedImage;
     4 
     5 /**
     6  * <p><code>OverTurnImages</code>,提供可以沿著Image的某個(gè)邊進(jìn)行翻轉(zhuǎn)的方法
     7  * </p>
     8  * 
     9  * @author 如果有一天de
    10  *
    11  */
    12 public class OverTurnImage {
    13     /**
    14      * <p>翻轉(zhuǎn)類型:原始image</p>
    15      */
    16     public static final int orign=0;
    17     /**
    18      * <p>矩形左側(cè)邊翻轉(zhuǎn)</p>
    19      */
    20     public static final int LeftEdgeTurn=1;
    21     /**
    22      * <p>矩形右側(cè)邊翻轉(zhuǎn)</p>
    23      */
    24     public static final int RightEdgeTurn=2;
    25     /**
    26      * <p>矩形上邊翻轉(zhuǎn)</p>
    27      */
    28     public static final int UpperEdgeTurn=3;
    29     /**
    30      * <p>矩形下邊翻轉(zhuǎn)</p>
    31      */
    32     public static final int DownEdgeTurn=4;
    33     /**
    34      * <p>生成翻轉(zhuǎn)的圖片,同時(shí)保存原圖片</p>
    35      * 
    36      * @param image 原始圖片
    37      * @param turnFlag 翻轉(zhuǎn)類型
    38      * @return Image 翻轉(zhuǎn)后的圖片
    39      */
    40     public static BufferedImage createTurnImage(BufferedImage image,int turnFlag)
    41     {
    42         BufferedImage imageTmp=null;
    43         int imageWidth=image.getWidth(null);
    44         int imageHeight=image.getHeight(null);
    45         
    46         
    47         if(turnFlag==1||turnFlag==2)
    48         {
    49             imageTmp=new BufferedImage(imageWidth*2,imageHeight,BufferedImage.TYPE_INT_ARGB);
    50         }else if(turnFlag==3||turnFlag==4)
    51         {
    52             imageTmp=new BufferedImage(imageWidth,imageHeight*2,BufferedImage.TYPE_INT_ARGB);
    53         }else{
    54             return image;
    55         }
    56         Graphics2D g2=(Graphics2D)imageTmp.createGraphics();
    57         if(turnFlag==1)
    58         {
    59             g2.drawImage(image,imageWidth,0,null);
    60             g2.scale(-1.01.0);
    61             g2.drawImage(image, -imageWidth, 0null);
    62             g2.scale(-1.0,1.0);
    63             g2.dispose();
    64         }
    65         if(turnFlag==2)
    66         {
    67             g2.drawImage(image,0,0,null);
    68             g2.scale(-1.01.0);
    69             g2.drawImage(image, -2*imageWidth, 0null);
    70             g2.scale(-1.0,1.0);
    71             g2.dispose();
    72         }
    73         if(turnFlag==3)
    74         {
    75             g2.drawImage(image, 0, imageHeight,null);
    76             g2.scale(1.0-1.0);
    77             g2.drawImage(image, 0-imageHeight, null);
    78             g2.scale(1.0,-1.0);
    79             g2.dispose();
    80         }
    81         if(turnFlag==4)
    82         {
    83             g2.drawImage(image,0,0,null);
    84             g2.scale(1.0-1.0);
    85             g2.drawImage(image, 0-2*imageHeight, null);
    86             g2.scale(1.0,-1.0);
    87             g2.dispose();
    88         }
    89         
    90         
    91         return imageTmp;
    92     }
    93 
    94 }
    posted on 2008-01-21 17:35 如果有一天de 閱讀(2884) 評(píng)論(2)  編輯  收藏 所屬分類: richclient

    FeedBack:
    # re: 用java2D的scale實(shí)現(xiàn)圖片翻轉(zhuǎn)
    2008-01-22 08:20 | Matthew Chen
    底層是仿射變換來(lái)實(shí)現(xiàn)的嗎?  回復(fù)  更多評(píng)論
      
    # re: 用java2D的scale實(shí)現(xiàn)圖片翻轉(zhuǎn)
    2008-01-22 08:54 | 如果有一天de
    @Matthew Chen
    是通過(guò)仿射變換實(shí)現(xiàn)的,用了已經(jīng)提供的方法scale(),通過(guò)傳入scale的參數(shù)為(1,-1)或(-1,1)進(jìn)行縱向以及橫向翻轉(zhuǎn),描繪翻轉(zhuǎn)圖片的左上角位置為負(fù)向?qū)崿F(xiàn)  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲av一本岛在线播放| 亚洲视频国产视频| 在线精品一卡乱码免费| 国产中文字幕在线免费观看| 久久久久久亚洲精品无码| 亚洲中文字幕日本无线码 | 精品无码一级毛片免费视频观看 | 无码天堂va亚洲va在线va| 91亚洲国产成人久久精品| 亚洲精品免费在线| 国内精品免费在线观看 | 免费黄色福利视频| a毛片全部免费播放| 国产精品极品美女自在线观看免费| 国产成人精品日本亚洲语音 | 免费观看四虎精品国产永久| 成人免费看片又大又黄| 一个人在线观看视频免费 | 亚洲欧洲AV无码专区| 精品亚洲成A人无码成A在线观看| 久久久无码精品亚洲日韩按摩| 久久久久亚洲av无码专区蜜芽| 国产一精品一AV一免费孕妇| 最好看最新的中文字幕免费| 亚洲免费视频网站| 久久午夜夜伦鲁鲁片无码免费| 国产羞羞的视频在线观看免费| A国产一区二区免费入口| 国产乱妇高清无乱码免费| caoporm碰最新免费公开视频| 成人在线免费视频| 中文字幕亚洲情99在线| 中国亚洲呦女专区| 亚洲久热无码av中文字幕| 亚洲av无码专区在线电影天堂| 亚洲狠狠色丁香婷婷综合| 最好2018中文免费视频| h片在线观看免费| 精品国产污污免费网站| 在线日本高清免费不卡| 中国在线观看免费高清完整版|