/************************************************
* <p>java对图片的操作(只能使用jpg)</p>
* 对图片的签章<br>
* 对图片的缩图<br>
* <p>Title:java对图片的操作(只能使用jpg)</p>
* <p>CreateData: 2004-12-2</p>
* <p>Description:</p>
* <p>Copyright: Copyright (c) 2004</p>
* @author 王凯
* @version 1.0
***********************************************/
package
com.cn.wangk.test;
import
java.io.*;
import
com.sun.image.codec.jpeg.*;
import
java.awt.Font;
import
java.awt.Graphics;
import
java.awt.Image;
import
java.awt.geom.AffineTransform;
import
java.awt.image.AffineTransformOp;
import
java.awt.image.BufferedImage;
import
java.awt.image.ImageObserver;
import
javax.imageio.ImageIO;
/**
* @author wangkai
*/
public
class
Test {
/**
*
*/
public
Test() {
try
{
File fo =
new
File(
"c:\\4.jpg"
);
String imagePath =
"C:\\Documents and Settings\\Administrator"
+
"\\My Documents\\My Pictures\\1.jpg"
;
String toimagepth =
"C:\\1.jpg"
;
InputStream imageIn;
imageIn =
new
FileInputStream(
new
File(imagePath));
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics g = image.getGraphics();
try
{
InputStream imageIn2 =
null
;
imageIn2 =
new
FileInputStream(
new
File(toimagepth));
JPEGImageDecoder decoder2 = JPEGCodec
.createJPEGDecoder(imageIn2);
BufferedImage image2 = decoder2.decodeAsBufferedImage();
ImageObserver obser =
null
;
int
x = image.getWidth() - image2.getWidth();
int
y = image.getHeight() - image2.getHeight();
g.drawImage(image2, x, y, obser);
}
catch
(FileNotFoundException e) {
g.setFont(
new
Font(
"宋体"
, Font.PLAIN,
18
));
g.drawString(
"秋水工作室"
, image.getWidth() -
100
,
image.getHeight() -
20
);
g.drawString(
"water_wang@xs.zj.cn"
, image.getWidth() -
180
,
image.getHeight() -
10
);
}
g.dispose();
ImageIO.write(image,
"jpeg"
, fo);
System.out.println(
"ok"
);
}
catch
(FileNotFoundException e) {
e.printStackTrace();
}
catch
(ImageFormatException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
}
public
static
void
saveFixedBoundIcon(File imageFile,
int
height,
int
width)
throws
Exception {
double
Ratio =
0.0
;
if
(imageFile ==
null
|| !imageFile.isFile())
throw
new
Exception(imageFile +
"找不到指定的文件!"
);
String filePath = imageFile.getPath();
BufferedImage Bi = ImageIO.read(imageFile);
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();
}
File savefile =
new
File(filePath +
"_"
+ height +
"_"
+ width
+
".jpg"
);
Image Itemp = Bi.getScaledInstance(width, height,
Image.SCALE_SMOOTH);
AffineTransformOp op =
new
AffineTransformOp(AffineTransform
.getScaleInstance(Ratio, Ratio),
null
);
Itemp = op.filter(Bi,
null
);
try
{
ImageIO.write((BufferedImage) Itemp,
"jpeg"
, savefile);
}
catch
(Exception ex) {
}
}
}
public
static
void
main(String[] args) {
try
{
Test.saveFixedBoundIcon(
new
File(
"C:\\test.jpg"
),
200
,
200
);
}
catch
(Exception e) {
e.printStackTrace();
}
}
}