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

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

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

    隨筆-200  評論-148  文章-15  trackbacks-0
    操作圖片



    import java.awt.*;
    import java.awt.image.*;
    import javax.imageio.ImageIO;
    import javax.imageio.ImageIO.*;
    import javax.imageio.IIOException;
    import java.io.*;
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    import javax.servlet.http.HttpSession;


    // 圖片操作,改變大小加水印***********@與羊共舞的狼
    public class ImageOperate {


    /**
    * 給圖片加水印,但不改變大小
    * @param strOriginalFileName String(原始文件)
    * @param strWaterMarkFileName String(水印后)
    */
    public void waterMark(String strOriginalFileName,String strWaterMarkFileName,HttpSession session){
    try{
    //源文件
    String root=session.getServletContext().getRealPath("/");
    File fileOriginal = new File(root+strOriginalFileName);
    Image imageOriginal = ImageIO.read(fileOriginal);
    int widthOriginal = imageOriginal.getWidth(null);
    int heightOriginal = imageOriginal.getHeight(null);
    System.out.println("widthOriginal:" + widthOriginal + "theightOriginal:" + heightOriginal);

    BufferedImage bufImage = new BufferedImage(widthOriginal,heightOriginal,BufferedImage.TYPE_INT_RGB);
    Graphics g = bufImage.createGraphics();
    g.drawImage(imageOriginal,0,0,widthOriginal,heightOriginal,null);

    //水印文件
    File fileWaterMark = new File(root+strWaterMarkFileName);
    Image imageWaterMark = ImageIO.read(fileWaterMark);
    int widthWaterMark = imageWaterMark.getWidth(null);
    int heightWaterMark = imageWaterMark.getHeight(null);
    System.out.println("widthWaterMark:" + widthWaterMark + "theightWaterMark:" + heightWaterMark);

    //水印文件在源文件的右下角
    g.drawImage(imageWaterMark,widthOriginal - widthWaterMark,heightOriginal - heightWaterMark,widthWaterMark,heightWaterMark,null);
    g.dispose();

    FileOutputStream fos = new FileOutputStream( root+strOriginalFileName);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
    encoder.encode(bufImage);
    fos.flush();
    fos.close();
    fos = null;
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    /**
    * 修改圖片大小
    */
    public void alterSize(String srcImgFile,String addChar,int new_w,int new_h,HttpSession session){

    //System.out.print("文件路徑為:"+"http://"+srcImgFile);

    String root=session.getServletContext().getRealPath("/");
    java.io.File file=new java.io.File(root+srcImgFile);
    if(file.exists())
    System.out.println("文件存在");
    else
    System.out.println("文件不存在");

    int i = srcImgFile.indexOf(".");
    int sLen = srcImgFile.length();
    String suffix = srcImgFile.substring(i, sLen); //帶點+后綴名
    String urlName=srcImgFile.substring(0,i); //路徑+文件名
    String newUrlName=root+urlName+addChar+suffix;
    //System.out.print("新文件名為"+newUrlName);
    Image src=null;
    try
    {
    src = javax.imageio.ImageIO.read(file);
    java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(new_w,new_h,java.awt.image.BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);
    FileOutputStream newimage=new FileOutputStream(newUrlName);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
    encoder.encode(tag); //近JPEG編碼
    newimage.close();

    }
    catch(IIOException ee)
    {
    ee.printStackTrace();
    System.out.print("這里出錯了");
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }//End sizeAlter


    }

    posted on 2006-10-28 10:01 無聲 閱讀(5530) 評論(4)  編輯  收藏 所屬分類: 職場生活

    評論:
    # re: Java操作圖片改變大小加水印[未登錄] 2008-02-20 22:53 | javaman
    使用函數改變圖片大小后,原來圖片沒有背景色,改變后的新圖片有黑色背景色,如何去除那個黑色背景色。  回復  更多評論
      
    # 回復一樓 2008-04-06 03:35 | 路過
    java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(new_w,new_h,java.awt.image.BufferedImage.TYPE_INT_RGB);
    里面的RGB改成ARGB大概就可以了。  回復  更多評論
      
    # re: Java操作圖片改變大小加水印 2008-07-30 17:01 | lu
    變小后 失真嗎? 我這么處理后 圖片嚴重失真  回復  更多評論
      
    # re: Java操作圖片改變大小加水印[未登錄] 2008-09-12 13:38 | bin
    參數可以給些說明嗎?都不知道那些參數要傳遞什么...  回復  更多評論
      
    主站蜘蛛池模板: 中国亚洲呦女专区| 国产亚洲日韩在线a不卡| 成人在线免费观看| 国产成人AV片无码免费| 免费人成大片在线观看播放电影| 亚洲伦理一二三四| 亚洲国产高清在线| 在线亚洲精品自拍| 可以免费观看一级毛片黄a| 黄在线观看www免费看| 久久香蕉国产线看免费| 一级毛片视频免费| 亚洲乱码av中文一区二区| 亚洲精品福利网站| 亚洲国产成人久久综合一| 在线亚洲精品自拍| 亚洲日韩国产精品乱| 国产免费资源高清小视频在线观看| 国产免费不卡v片在线观看| 99久久免费中文字幕精品| 999zyz**站免费毛片| 黄色视频在线免费观看| 香蕉视频免费在线| 美女被吸屁股免费网站| 国产产在线精品亚洲AAVV| 久久国产亚洲精品| 亚洲乱码国产乱码精华| 亚洲乱亚洲乱妇无码| 亚洲性无码AV中文字幕| 亚洲一区二区三区乱码在线欧洲| 亚洲一区二区三区91| 亚洲国产成人久久精品app | 色吊丝性永久免费看码| 黄色一级视频免费| 深夜a级毛片免费视频| 成人免费观看男女羞羞视频| 一级人做人爰a全过程免费视频| 亚欧国产一级在线免费| 久久久久久毛片免费看| 日韩av无码免费播放| 特级精品毛片免费观看|