<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

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 18禁止看的免费污网站| 久久99青青精品免费观看| 在线播放免费播放av片| 国产精品久久亚洲不卡动漫| 波多野结衣中文字幕免费视频| 亚洲成人在线免费观看| 亚洲三级在线免费观看| 亚洲春色在线观看| 99久久综合国产精品免费| 亚洲日韩精品国产3区| 免费国产怡红院在线观看| xxxxx做受大片在线观看免费 | 成年美女黄网站18禁免费 | a级亚洲片精品久久久久久久 | 亚洲欧洲精品无码AV| 免费国产成人α片| 亚洲欧洲久久精品| 免费无码又爽又刺激毛片| 黄色a三级免费看| 亚洲AV第一页国产精品| 免费国产成人高清在线观看网站| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲国产一成久久精品国产成人综合 | 99视频免费观看| 久久精品国产亚洲av麻豆蜜芽 | 精品国产免费观看| 国产免费MV大全视频网站| 77777_亚洲午夜久久多人| 性盈盈影院免费视频观看在线一区| 美女一级毛片免费观看| 久久精品7亚洲午夜a| 欧美好看的免费电影在线观看| 色费女人18女人毛片免费视频| 亚洲av永久无码精品表情包| 成年女人毛片免费播放视频m| 美女免费精品高清毛片在线视| 亚洲午夜精品久久久久久人妖| 成人毛片免费视频| 免费无码H肉动漫在线观看麻豆| 亚洲乱码一二三四区麻豆| 亚洲精品成人久久久|