空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          jsp 上傳圖片并生成縮位圖或者加水印

          // 添加水印,filePath?源圖片路徑,?watermark?水印圖片路徑
          public ? static ? boolean ?createMark(String?filePath,String?watermark)? {
          ImageIcon?imgIcon
          = new ?ImageIcon(filePath);
          Image?theImg?
          = imgIcon.getImage();
          ImageIcon?waterIcon
          = new ?ImageIcon(watermark);
          Image?waterImg?
          = waterIcon.getImage();
          int ?width = theImg.getWidth( null );
          int ?height = ?theImg.getHeight( null );
          BufferedImage?bimage?
          = ? new ?BufferedImage(width,height,?BufferedImage.TYPE_INT_RGB);?
          Graphics2D?g
          = bimage.creatGraphics(?);
          g.setColor(Color.red);
          g.setBackground(Color.white);
          g.drawImage(theImg,?
          0 ,? 0 ,? null ?);
          g.drawImage(waterImg,?
          100 ,? 100 ,? null ?);
          g.drawString(
          " 12233 " , 10 , 10 );? // 添加文字
          g.dispose();
          try {
          FileOutputStream?out
          = new ?FileOutputStream(filePath);
          JPEGImageEncoder?encoder?
          = JPEGCodec.createJPEGEncoder(out);?
          JPEGEncodeParam?param?
          = ?encoder.getDefaultJPEGEncodeParam(bimage);?
          param.setQuality(50f,?
          true );?
          encoder.encode(bimage,?param);?
          out.close();
          }
          catch (Exception?e) {? return ? false ;?}
          return ? true ;
          }

          JAVA給圖片上添加水印文字

          import ?java.awt. * ;
          import ?java.awt.image. * ;
          import ?java.io. * ;
          import ?javax.swing. * ;
          import ?com.sun.image.codec.jpeg. * ;
          import ?java.text.AttributedString;
          import ?java.awt.font.TextAttribute;
          import ?java.text.AttributedCharacterIterator;


          public ? class ?WaterMark? {
          ???
          /** ? */ /**
          ??????*?給圖片添加水印
          ?????*?
          @param ?filePath?需要添加水印的圖片的路徑
          ?????*?
          @param ?markContent?水印的文字
          ?????*?
          @param ?markContentColor?水印文字的顏色
          ?????*?
          @param ?qualNum?圖片質量
          ?????*?
          @param ?fontType?字體
          ?????*?
          @param ?fontsize?字體大小
          ?????*?
          @return
          ?????*?
          @author ?zhongweihai?newwei2001@yahoo.com.cn
          ?????
          */

          ????
          public ? boolean ?createMark(String?filePath,String?markContent,Color?markContentColor, float ?qualNum,
          ??????????????????????????????String?fontType,
          int ?fontSize)
          ????
          {
          ????????ImageIcon?imgIcon
          = new ?ImageIcon(filePath);
          ????????Image?theImg?
          = imgIcon.getImage();
          ????????
          int ?width = theImg.getWidth( null );
          ????????
          int ?height = ?theImg.getHeight( null );
          ????????BufferedImage?bimage?
          = ? new ?BufferedImage(width,height,?BufferedImage.TYPE_INT_RGB);
          ????????Graphics2D?g
          = bimage.createGraphics();
          ????????g.setColor(markContentColor);
          ????????g.setBackground(Color.white);
          ????????g.drawImage(theImg,?
          0 ,? 0 ,? null ?);
          ????????AttributedString?ats?
          = ? new ?AttributedString(markContent);
          ????????Font?f?
          = ? new ?Font(fontType,Font.BOLD,?fontSize);

          ????????ats.addAttribute(TextAttribute.FONT,?f,?
          0 ,markContent.length()?);
          ????????AttributedCharacterIterator?iter?
          = ?ats.getIterator();

          ????????g.drawString(iter,width
          / 5 ,height / 5 );? // 添加水印的文字和設置水印文字出現的內容
          ????????g.dispose();

          ????????
          try {
          ????????FileOutputStream?out
          = new ?FileOutputStream(filePath);
          ????????JPEGImageEncoder?encoder?
          = JPEGCodec.createJPEGEncoder(out);
          ????????JPEGEncodeParam?param?
          = ?encoder.getDefaultJPEGEncodeParam(bimage);
          ????????param.setQuality(qualNum,?
          true );
          ????????encoder.encode(bimage,?param);
          ????????out.close();
          ????????}
          catch (Exception?e)
          ????????
          {? return ? false ;?}
          ????????
          return ? true ;
          ????}


          ????
          public ? static ? void ?main(String[]?args)
          ????
          {
          ?????WaterMark?wm?
          = ? new ?WaterMark();
          ?????wm.createMark(
          " c:\year2-11.jpg " , " 此圖片來自煞筆網 " ,Color.red,70f, " 黑體 " , 23 );
          ?????}

          }
          生成縮小jpg圖片程序

          import ?java.awt.image.BufferedImage;
          import ?java.io.File;
          import ?javax.swing.Icon;
          import ?javax.swing.ImageIcon;
          import ?javax.imageio.ImageIO;
          import ?java.awt.image.AffineTransformOp;
          import ?java.awt.geom.AffineTransform;
          import ?java.awt.Image;

          public ? class ?ZoomPicture {
          ??
          public ? static ? void ?main(String?arg[]) {
          ????
          ????String?filePath?
          = ? " g:/圖片.jpg " ;?? // ?圖片的位置
          ????
          ????
          int ?height = 50 ;
          ????
          int ?width = 150 ;
          ????Icon?icon?
          = ? null ;
          ????
          try {
          ???????icon?
          = ?getFixedBoundIcon(filePath,height,width);
          ???????}
          catch (Exception?e) {
          ????????System.out.println(
          " exception?:? " ? + ?e);
          ????????}

          ????System.out.println(
          " ?###? " ? + ?icon);?? // 生成新圖片的位置;
          ??}

          ??
          ?????
          public ? static ?Icon?getFixedBoundIcon(String?filePath,? int ?height,? int ?width)?
          ????????
          throws ?Exception {
          ????????
          double ?Ratio = 0.0 ;?
          ???????
          // 縮放比例?
          ???File?F? = ? new ?File(filePath);?
          ????????
          if ?( ! F.isFile())? throw ? new ?Exception
          ???????????(F
          + " ?is?not?image?file?error?in?getFixedBoundIcon! " );?
          ????????Icon?ret?
          = ? new ?ImageIcon(filePath);
          ????????BufferedImage?Bi?
          = ?ImageIO.read(F);?
          ????????
          if ?((Bi.getHeight() > height)? || ?(Bi.getWidth() > width)) {?
          ????
          if ?(Bi.getHeight() > Bi.getWidth()) {?
          ?????Ratio?
          = ?( new ?Integer(height)).doubleValue()? / Bi.getHeight();?
          ????}

          ????
          else ? {
          ??????Ratio?
          = ?( new ?Integer(width)).doubleValue() / Bi.getWidth();?
          ????}

          ????
          int ?lastLength? = ?filePath.lastIndexOf( " . " );
          ????String?subFilePath?
          = ?filePath.substring( 0 ,lastLength);
          ????String?fileType?
          = ?filePath.substring(lastLength);
          ????File?zoomFile?
          = ? new ?File(subFilePath + " _ " + height? + " _ " + width + fileType);
          ????Image?Itemp?
          = ?Bi.getScaledInstance?(width,height,Bi.SCALE_SMOOTH);
          ????AffineTransformOp?op?
          = ? new ?AffineTransformOp
          ?????(AffineTransform.getScaleInstance(Ratio,?Ratio),?
          null );
          ????Itemp?
          = ?op.filter(Bi,? null );?
          ????
          try ? {
          ??????ImageIO.write((BufferedImage)Itemp,?
          " jpg " ,?zoomFile);?
          ??????ret?
          = ? new ?ImageIcon(zoomFile.getPath());?
          ????}
          catch ?(Exception?ex)? {
          ?????System.out.println(
          " ########?here?error?:? " ? + ?ex);
          ????}
          ?
          ???}

          ????
          return ?ret;
          ?}

          }



          posted on 2006-11-24 15:34 蘆葦 閱讀(7431) 評論(5)  編輯  收藏 所屬分類: JAVA

          Feedback

          # re: jsp 上傳圖片并生成縮位圖或者加水印 ,給圖片添加水印,生成縮小圖片程序 等 2006-11-24 15:34 蘆葦
          Aspjpeg添加水印完整方法
          Aspjpeg添加水印完整方法
          用ASPJPEG組件制作圖片的縮略圖和加水印


          ASPJPEG是Persits出品的共享軟件,試用期為30天,您可以在這里下載:http://www.persits.com/aspjpeg.exe。最新版本號是1.3
          ASPJPEG是一款功能相當強大的圖象處理組件,用它可以輕松地做出圖片的縮略圖和為圖片加上水印功能。下面簡單介紹一下使用方法:
          您先要執行下載得到的exe文件,安裝該組件
          1、為圖片制作縮略圖

          <% \\\' 建立實例
          Dim Jpeg,Path
          Set Jpeg = Server.CreateObject("Persits.Jpeg")
          \\\' 圖片所在位置
          Path = Server.MapPath("images") & "\\\\clock.jpg"


          \\\' 打開
          Jpeg.Open Path

          \\\' 設置縮略圖大小(這里比例設定為50%)
          Jpeg.Width = Jpeg.OriginalWidth / 2
          Jpeg.Height = Jpeg.OriginalHeight / 2

          \\\' 保存縮略圖到指定文件夾下
          Jpeg.Save Server.MapPath("images") & "\\\\clock_small.jpg"

          \\\' 注銷實例
          Set Jpeg = Nothing
          %>

          <IMG SRC="images/clock.jpg"><P>
          <IMG SRC="images/clock_small.jpg">


          2、為圖片加入水印功能
          <%
          Dim Jpeg
          \\\' 建立實例
          Set Jpeg = Server.CreateObject("Persits.Jpeg")
          \\\' 打開目標圖片
          Jpeg.Open Server.MapPath("images/dodge_viper.jpg")

          \\\' 添加文字水印
          Jpeg.Canvas.Font.Color = &HFF0000\\\' 紅色
          Jpeg.Canvas.Font.Family = "宋體"
          Jpeg.Canvas.Font.Bold = True
          Jpeg.Canvas.Print 10, 10, "Copyright (c) Cnmaya.org"

          \\\' 保存文件
          Jpeg.Save Server.MapPath("images/dodge_viper_framed.jpg")

          \\\' 注銷對象
          Set Jpeg = Nothing
          %>


          上次做過圖片水印,效果很差,沒辦法把圖片弄成背景透明的,用背景透明gif會自動填充成白色。用去掉某種顏色的功能,圖片顏色總是不純,出來的效果斑斑點點。今天靈機一動,把這兩個結合起來,用背景透明的gif,并且抽取水印底色,果然成功了!

          ogvbox.Canvas.Pen.Color = &H000000 \\\'// 邊框的顏色
          ogvbox.Canvas.Pen.Width = 1 \\\'// 邊框的粗細
          ogvbox.Canvas.Brush.Solid = False \\\'// 圖片邊框內是否填充顏色
          ogvbox.DrawImage ogvbox.Width-210, ogvbox.Height-74, Logobox ,0.3,&HFFFFFF \\\'// 加入圖片的位置坐標(添加水印圖片),我用圖片大小減去水印大小,把水印加在右下角。參數順序為:水平坐標,垂直坐標,水印圖片地址,水銀透明度,抽取顏色(&H表示16進制)
          ogvbox.Canvas.Bar 0, 0, ogvbox.Width, ogvbox.Height \\\'// 圖片邊框線的位置坐標和大小
          ogvbox.Save Server.MapPath(imagename) \\\'// 生成文件
          \'//------Pollener.com AspJpeg組件的預覽和水印生成------開始------
          \'創建預覽圖片:call CreateView(原始文件的路徑,預覽文件名及路徑)
          Sub CreateView(imagename,tempFilename)
          \'定義變量。
          Dim PreviewImageFolderName
          Dim ogvbox,objFont
          Dim Logobox,LogoPath
          LogoPath = Server.MapPath("images") & "\\shuiyin.gif" \'//加入圖片所在路徑及文件名(我的是論壇\\images\\shuiyin.gif)。

          Select Case upload_ViewType
          Case 0
          \'---------------------CreatePreviewImage---------------
          set ogvbox = Server.CreateObject("CreatePreviewImage.cGvbox")
          ogvbox.SetSavePreviewImagePath=Server.MapPath(tempFilename) \'預覽圖存放路徑。
          ogvbox.SetPreviewImageSize =SetPreviewImageSize \'預覽圖寬度。
          ogvbox.SetImageFile = trim(Server.MapPath(imagename)) \'imagename原始文件的物理路徑。
          \'創建預覽圖的文件。
          If ogvbox.DoImageProcess=false Then
          Response.write "生成預覽圖錯誤:"& ogvbox.GetErrString
          End If
          Case 1
          \'---------------------AspJpegV1.2---------------
          Set Logobox = Server.CreateObject("Persits.Jpeg")
          \'//建議不要圖片和文字水印同時使用,本代碼為使用圖片水印。
          Logobox.Open LogoPath \'//讀取添加的圖片。

          \'//重新設置圖片的大小。
          Logobox.Width = 186 \'//用做水印的圖片的寬度值(像素)。
          Logobox.Height = 52 \'//用做水印的圖片的高度值(像素)。
          \'//添加水印。
          Set ogvbox = Server.CreateObject("Persits.Jpeg")
          \'//讀取要處理的原文件。
          ogvbox.Open Trim(Server.MapPath(imagename))
          If ogvbox.OriginalWidth<Cint(ImageWidth) or ogvbox.Originalheight<Cint(ImageHeight) Then
          F_Viewname=""
          Set ogvbox = Nothing
          Exit Sub
          Else
          IF ImageMode<>"" and FileExt<>"gif" Then \'//如果將這行改為IF ImageMode<>"" Then則可給上傳的GIF圖片也加上水印,但是那些動畫的GIF在加了水印以后就只剩第一楨了,根據你的需求酌情處理吧。

          \'//關于修改字體及文字顏色的。
          \'//ogvbox.Canvas.Font.Color = &H0000FF \'//水印文字的顏色,&H后面輸入色彩值。
          \'//ogvbox.Canvas.Font.Size = 18 \'//水印文字的大小。
          \'//ogvbox.Canvas.Font.Family = "Arial" \'//水印文字的字體名稱。
          \'//ogvbox.Canvas.Font.ShadowColor = &H000000 \'//水印文字的陰影色彩。
          \'//ogvbox.Canvas.Font.ShadowXoffset = 1 \'//水印文字陰影向右偏移的像素值,輸入負值則向左偏移。
          \'//ogvbox.Canvas.Font.ShadowYoffset = 1 \'//水印文字陰影向下偏移的像素值,輸入負值則向右偏移。
          \'//ogvbox.Canvas.Font.Quality = 3 \'//水印文字的清晰度,從0~4,變換不是很大,建議用2或3。
          \'//ogvbox.Canvas.Font.Bold = True \'//水印文字是否為粗體,True=粗體 False=正常。

          \'ogvbox.Canvas.Print 10, 10, ImageMode \'//水印文字的起始坐標(像素)。
          ogvbox.Canvas.Pen.Color = &H000000 \'//增加水印后圖片的邊框色彩。
          ogvbox.Canvas.Pen.Width = 1 \'//增加水印后圖片的邊框寬度。
          ogvbox.Canvas.Brush.Solid = False \'//邊框內是否填充顏色,你可以試試看值為True時的效果^o^
          ogvbox.DrawImage ogvbox.width-186, ogvbox.height-52, Logobox, 0.5 \'//水印圖片的起始坐標,我這里ogvbox.width-186, ogvbox.height-52,表示圖片在右下角,因為我的圖片寬是186,高是52,所以這樣寫,你可以根據自己的圖片進行調整。0.5是透明度,我這里是半透明,1表示不透明,你也可以試試看0.7或者0.8的效果。
          ogvbox.Canvas.Bar 0, 0, ogvbox.Width, ogvbox.Height \'//水印可用的范圍。我這里表示左上角至右下角,即整張圖片的任意為止都可加水印。
          ogvbox.Save Server.MapPath(imagename) \'//根據以上參數生成增加水印后的圖片文件。
          End If
          ogvbox.Width = ImageWidth
          ogvbox.height = ImageHeight
          \'ogvbox.height = ogvbox.Originalheight*ImageWidth\\ogvbox.OriginalWidth
          ogvbox.Sharpen 1, 120
          ogvbox.Save Server.MapPath(tempFilename) \'//生成增加水印后的圖片的預覽圖片。
          End If
          Set Logobox=Nothing
          \'//------Pollener.com AspJpeg組件的預覽和水印生成------結束------

            回復  更多評論
            

          # re: jsp 上傳圖片并生成縮位圖或者加水印 ,給圖片添加水印,生成縮小圖片程序 等 2009-02-24 14:11 12
          謝謝!  回復  更多評論
            

          # re: jsp 上傳圖片并生成縮位圖或者加水印 ,給圖片添加水印,生成縮小圖片程序 等 2009-05-21 22:21 wer
          謝謝

          -----------------------------------
          http://www.wjxj.com  回復  更多評論
            

          # re: jsp 上傳圖片并生成縮位圖或者加水印 ,給圖片添加水印,生成縮小圖片程序 等 2011-03-08 23:51 大賽
          謝謝  回復  更多評論
            

          # re: jsp 上傳圖片并生成縮位圖或者加水印 ,給圖片添加水印,生成縮小圖片程序 等[未登錄] 2011-12-21 09:38 zsd
          阿發  回復  更多評論
            

          主站蜘蛛池模板: 紫阳县| 贵南县| 浙江省| 弥渡县| 中超| 房产| 清丰县| 长阳| 天柱县| 苏州市| 北流市| 洪雅县| 石嘴山市| 鄂托克前旗| 杂多县| 稷山县| 唐山市| 同心县| 皋兰县| 西充县| 平潭县| 图片| 桂阳县| 江都市| 三原县| 福建省| 宁陕县| 民权县| 深水埗区| 会同县| 澜沧| 凤阳县| 荔浦县| 容城县| 余姚市| 垦利县| 邵东县| 雷州市| 平果县| 凌云县| 漯河市|