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; }
}
|