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

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

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

    Pudgy's World
    posts - 13,  comments - 16,  trackbacks - 0

    ?Rotate Image 45 Degrees

    ?


    /*

    Java?Media?APIs:?Cross-Platform?Imaging,?Media?and?Visualization
    Alejandro?Terrazas
    Sams,?Published?November?2002,?
    ISBN?0672320940
    */


    import?java.awt.Graphics;
    import?java.awt.Graphics2D;
    import?java.awt.Image;
    import?java.awt.Insets;
    import?java.awt.MediaTracker;
    import?java.awt.Toolkit;
    import?java.awt.geom.AffineTransform;
    import?java.awt.geom.Point2D;
    import?java.awt.image.AffineTransformOp;
    import?java.awt.image.BufferedImage;
    import?java.awt.image.BufferedImageOp;

    import?javax.swing.JFrame;

    /**
    ?*?RotateImage45Degrees.java?-?1.?scales?an?image's?dimensions?by?a?factor?of
    ?*?two?2.?rotates?it?45?degrees?around?the?image?center?3.?displays?the
    ?*?processed?image
    ?
    */
    public?class?RotateImage45Degrees?extends?JFrame?{
    ??
    private?Image?inputImage;

    ??
    private?BufferedImage?sourceBI;

    ??
    private?BufferedImage?destinationBI?=?null;

    ??
    private?Insets?frameInsets;

    ??
    private?boolean?sizeSet?=?false;

    ??
    public?RotateImage45Degrees(String?imageFile)?{
    ????addNotify();
    ????frameInsets?
    =?getInsets();
    ????inputImage?
    =?Toolkit.getDefaultToolkit().getImage(imageFile);

    ????MediaTracker?mt?
    =?new?MediaTracker(this);
    ????mt.addImage(inputImage,?
    0);
    ????
    try?{
    ??????mt.waitForID(
    0);
    ????}?
    catch?(InterruptedException?ie)?{
    ????}

    ????sourceBI?
    =?new?BufferedImage(inputImage.getWidth(null),?inputImage
    ????????.getHeight(
    null),?BufferedImage.TYPE_INT_ARGB);

    ????Graphics2D?g?
    =?(Graphics2D)?sourceBI.getGraphics();
    ????g.drawImage(inputImage,?
    0,?0,?null);

    ????AffineTransform?at?
    =?new?AffineTransform();

    ????
    //?scale?image
    ????at.scale(2.0,?2.0);

    ????
    //?rotate?45?degrees?around?image?center
    ????at.rotate(45.0?*?Math.PI?/?180.0,?sourceBI.getWidth()?/?2.0,?sourceBI
    ????????.getHeight()?
    /?2.0);

    ????
    /*
    ?????*?translate?to?make?sure?the?rotation?doesn't?cut?off?any?image?data
    ?????
    */
    ????AffineTransform?translationTransform;
    ????translationTransform?
    =?findTranslation(at,?sourceBI);
    ????at.preConcatenate(translationTransform);

    ????
    //?instantiate?and?apply?affine?transformation?filter
    ????BufferedImageOp?bio;
    ????bio?
    =?new?AffineTransformOp(at,?AffineTransformOp.TYPE_BILINEAR);

    ????destinationBI?
    =?bio.filter(sourceBI,?null);

    ????
    int?frameInsetsHorizontal?=?frameInsets.right?+?frameInsets.left;
    ????
    int?frameInsetsVertical?=?frameInsets.top?+?frameInsets.bottom;
    ????setSize(destinationBI.getWidth()?
    +?frameInsetsHorizontal,?destinationBI
    ????????.getHeight()
    ????????
    +?frameInsetsVertical);
    ????show();
    ??}

    ??
    /*
    ???*?find?proper?translations?to?keep?rotated?image?correctly?displayed
    ???
    */
    ??
    private?AffineTransform?findTranslation(AffineTransform?at,?BufferedImage?bi)?{
    ????Point2D?p2din,?p2dout;

    ????p2din?
    =?new?Point2D.Double(0.0,?0.0);
    ????p2dout?
    =?at.transform(p2din,?null);
    ????
    double?ytrans?=?p2dout.getY();

    ????p2din?
    =?new?Point2D.Double(0,?bi.getHeight());
    ????p2dout?
    =?at.transform(p2din,?null);
    ????
    double?xtrans?=?p2dout.getX();

    ????AffineTransform?tat?
    =?new?AffineTransform();
    ????tat.translate(
    -xtrans,?-ytrans);
    ????
    return?tat;
    ??}

    ??
    public?void?paint(Graphics?g)?{
    ????
    if?(destinationBI?!=?null)
    ??????g.drawImage(destinationBI,?frameInsets.left,?frameInsets.top,?
    this);
    ??}

    ??
    public?static?void?main(String[]?args)?{
    ????
    new?RotateImage45Degrees("fruits.png");
    ??}

    }

    ?

    posted on 2005-09-22 07:23 Pudgy's World 閱讀(451) 評論(0)  編輯  收藏 所屬分類: Computer

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


    網站導航:
     

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類(13)

    隨筆檔案(13)

    文章分類(4)

    文章檔案(5)

    相冊

    Developer

    Favorite blogs

    搜索

    •  

    積分與排名

    • 積分 - 22384
    • 排名 - 1627

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久aa毛片免费播放嗯啊| 国产亚洲精品美女久久久久| 二级毛片免费观看全程| 久久久久久亚洲AV无码专区| 乱人伦中文视频在线观看免费| 色多多www视频在线观看免费| 午夜男人一级毛片免费| 亚洲午夜av影院| 一级女性全黄久久生活片免费 | 亚洲色婷婷一区二区三区| 成人国产网站v片免费观看| 亚洲国产精品碰碰| 亚欧洲精品在线视频免费观看| 日韩精品亚洲专区在线观看| 成年网站免费入口在线观看| 精品国产亚洲男女在线线电影| 久久亚洲AV成人无码电影| **毛片免费观看久久精品| 免费在线观看亚洲| 一区二区三区在线免费观看视频| 老司机亚洲精品影视www| 黄色网址在线免费| 日韩亚洲Av人人夜夜澡人人爽| 亚洲免费视频观看| 亚洲人成网亚洲欧洲无码| 亚洲AV无码乱码在线观看性色扶 | 亚洲AV无码一区二区三区牲色| 日韩精品视频免费观看| 日日狠狠久久偷偷色综合免费 | 亚洲乱码av中文一区二区| 国产午夜免费秋霞影院| 国产特黄一级一片免费| 亚洲国产精品自在线一区二区| 99久久99久久精品免费看蜜桃| 亚洲av无码片vr一区二区三区 | 182tv免费视频在线观看| 亚洲国产综合精品| 免费乱理伦在线播放| 国产色无码精品视频免费| 亚洲精品在线免费观看视频| 在线视频免费国产成人|