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