<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
    使用函數(shù)改變圖片大小后,原來圖片沒有背景色,改變后的新圖片有黑色背景色,如何去除那個黑色背景色。  回復(fù)  更多評論
      
    # 回復(fù)一樓 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大概就可以了。  回復(fù)  更多評論
      
    # re: Java操作圖片改變大小加水印 2008-07-30 17:01 | lu
    變小后 失真嗎? 我這么處理后 圖片嚴重失真  回復(fù)  更多評論
      
    # re: Java操作圖片改變大小加水印[未登錄] 2008-09-12 13:38 | bin
    參數(shù)可以給些說明嗎?都不知道那些參數(shù)要傳遞什么...  回復(fù)  更多評論
      
    主站蜘蛛池模板: 国产va精品免费观看| 免费看美女让人桶尿口| 77777亚洲午夜久久多喷| 国产成人免费网站在线观看| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 亚洲精品无码久久千人斩| 99久久免费中文字幕精品| 亚洲av永久无码一区二区三区| 亚洲性在线看高清h片| 久久WWW免费人成一看片| 粉色视频在线观看www免费| 老汉色老汉首页a亚洲| 四虎影视在线永久免费观看| 久9这里精品免费视频| 免费亚洲视频在线观看| 亚洲图片激情小说| 中文字幕在线亚洲精品| 大学生高清一级毛片免费| 久久黄色免费网站| 免费无遮挡无遮羞在线看| 亚洲毛片免费观看| 亚洲综合精品香蕉久久网| 超pen个人视频国产免费观看| 香港a毛片免费观看 | 在线亚洲97se亚洲综合在线| 成人免费一区二区无码视频| 久久免费精品视频| 日韩免费在线中文字幕| 亚洲乱色熟女一区二区三区蜜臀| 亚洲avav天堂av在线不卡| 亚洲国产激情一区二区三区| 免费中文熟妇在线影片| 免费国产黄网站在线观看可以下载| 日本黄页网址在线看免费不卡| 亚洲三级视频在线| 亚洲国产精品免费视频| 国产亚洲视频在线播放| 免费h黄肉动漫在线观看| 在线播放免费人成视频在线观看 | 久久不见久久见中文字幕免费 | 亚洲精品中文字幕无码A片老|