本文实例讲述了Java实现给网站上传图片盖章的方法。分享给大家供大家参考。具体如下:
最近无聊,上了一会校友录,觉的校友录的图片都会加入一个章,呵呵,自己也就做了一个,不过只适合jpg格式。发出来给大家研究研究。欢迎讨论!
很老的代码了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/************************************************
* <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.*; //sun公司仅提供了jpg图片文件的编码api
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));
//得到输入的编码器,将文件流进行jpg格式编码
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
//得到编码后的图片对象
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics g = image.getGraphics();
try {
InputStream imageIn2 = null ;
imageIn2 = new FileInputStream( new File(toimagepth));
//得到输入的编码器,将文件流进行jpg格式编码
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) {
// 自动生成 catch 块
e.printStackTrace();
} catch (ImageFormatException e) {
// 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// 自动生成 catch 块
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) {
// Test ts = new Test();
try {
Test.saveFixedBoundIcon( new File(
"C:\\test.jpg" ), 200 , 200 );
} catch (Exception e) {
// 自动生成 catch 块
e.printStackTrace();
}
}
}
|
希望本文所述对大家的java程序设计有所帮助。