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?圖片質(zhì)量
?????*?
@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
);?
//
添加水印的文字和設(shè)置水印文字出現(xiàn)的內(nèi)容
????????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
"
,
"
此圖片來(lái)自煞筆網(wǎng)
"
,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;
?}
}
|