<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

    搜索

    •  

    積分與排名

    • 積分 - 22381
    • 排名 - 1627

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99久久国产亚洲综合精品| 亚洲av无码无在线观看红杏| 亚洲免费视频网址| 日韩免费无码一区二区三区| 亚洲成av人在线视| 久久国产免费一区二区三区| 久久精品a亚洲国产v高清不卡| 最近中文字幕无免费| 亚洲国产成人久久99精品| 免费下载成人电影| 最新亚洲人成无码网站| 亚洲一级特黄大片无码毛片 | 亚洲国产一级在线观看| 一本久久A久久免费精品不卡| 亚洲精品无码久久久影院相关影片| 国产色无码精品视频免费| 亚洲人成在线观看| 青青草免费在线视频| 亚洲AV第一成肉网| 日本亚洲欧洲免费天堂午夜看片女人员 | 蜜桃视频在线观看免费网址入口| 亚洲中文字幕久久精品蜜桃 | 久久永久免费人妻精品| 亚洲国产亚洲片在线观看播放| 无码一区二区三区免费视频| 亚洲а∨精品天堂在线| 亚洲欧洲中文日韩av乱码| 久久免费区一区二区三波多野| 亚洲无删减国产精品一区| 四虎成人免费观看在线网址 | a级毛片在线免费| 久久精品国产亚洲αv忘忧草| 免费99热在线观看| 免费精品一区二区三区第35 | 亚洲av之男人的天堂网站| 免费看污成人午夜网站| 九九九国产精品成人免费视频| 久久狠狠高潮亚洲精品| 亚洲国产成人精品女人久久久 | 亚洲一区二区三区免费观看| 青青青亚洲精品国产|