<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 閱讀(459) 評(píng)論(0)  編輯  收藏 所屬分類: Computer

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(1)

    隨筆分類(13)

    隨筆檔案(13)

    文章分類(4)

    文章檔案(5)

    相冊(cè)

    Developer

    Favorite blogs

    搜索

    •  

    積分與排名

    • 積分 - 22586
    • 排名 - 1626

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 最近中文字幕无免费| 亚洲A∨无码无在线观看| 亚洲电影在线免费观看| 深夜久久AAAAA级毛片免费看| 亚洲乱码一二三四区乱码| 亚洲欧洲日产国码无码久久99| 免费看美女被靠到爽的视频| 亚洲网站免费观看| 丁香花在线视频观看免费| 免费国产草莓视频在线观看黄| 2019亚洲午夜无码天堂| 亚洲网站免费观看| 亚洲av福利无码无一区二区| 亚洲综合久久夜AV | 免费成人黄色大片| 热久久精品免费视频| 国产va精品免费观看| 亚洲香蕉免费有线视频| 亚洲免费无码在线| 日韩精品无码免费视频| 看亚洲a级一级毛片| 亚洲av色香蕉一区二区三区蜜桃| 91亚洲国产在人线播放午夜| 婷婷亚洲久悠悠色悠在线播放| 亚洲伊人久久大香线蕉综合图片| 亚洲精品成a人在线观看| 免费a级毛片永久免费| 国产美女被遭强高潮免费网站| 毛色毛片免费观看| 成人免费a级毛片| 18禁成年无码免费网站无遮挡 | 国产免费观看视频| 性感美女视频免费网站午夜| 免费一本色道久久一区| 99精品国产免费久久久久久下载 | 亚洲啪啪免费视频| 亚洲美女aⅴ久久久91| 亚洲免费观看在线视频| 亚洲一区无码中文字幕乱码| 久久精品国产亚洲AV蜜臀色欲| 亚洲国产成人精品激情|