📄 imageutils.java
字号:
( (HttpServletResponse) Desc).setContentType("image/gif");
( (HttpServletResponse) Desc).setHeader("Content-Disposition",
" filename=animate.gif");
ServletOutputStream out = ( (HttpServletResponse) Desc).getOutputStream();
image.save(out);
out.flush();
out.close();
}
}
/**
* 产生flash动画
* @param Src_File String[] 源文件必须是jpg格式
* @param DelayTime int[] 单位为ms,最小单位不得小于1s
* @param Desc String 目标文件
* @throws Exception
*/
public static void DrawFlashAnimate(String[] Src_File, int[] DelayTime,
String Desc) throws
Exception {
if (Src_File != null && DelayTime != null) {
logWriter.Info("产生Flash动画");
int width = 0;
int height = 0;
Shape[] image = new Shape[Src_File.length];
for (int i = 0; i < Src_File.length; i++) {
FileInputStream jpegIn = new FileInputStream(Src_File[i]);
int[] size = new int[2];
image[i] = ImageUtil.shapeForImage(jpegIn, size);
if (width < size[0])
width = size[0];
if (height < size[1])
height = size[1];
jpegIn.close();
}
Movie movie = new Movie(width, height, 1, 5, null);
for (int i = 0; i < image.length; i++) {
if (DelayTime[i] > 1000) {
for (int j = 0; j < (DelayTime[i]) / 1000; j++) {
Frame frame = movie.appendFrame();
frame.placeSymbol(image[i], 0, 0);
}
}
else {
Frame frame = movie.appendFrame();
frame.placeSymbol(image[i], 0, 0);
}
}
//文件输出
BufferedOutputStream out = new BufferedOutputStream(new
FileOutputStream( (String) Desc));
movie.write(out);
out.flush();
out.close();
}
}
/**
* 产生flash动画
* @param Src_File String[] 源文件必须是jpg格式
* @param DelayTime int[] 单位为ms,最小单位不得小于1s
* @param Desc HttpServletResponse
* @throws Exception
*/
public static void DrawFlashAnimate(String[] Src_File, int[] DelayTime,
HttpServletResponse Desc) throws
Exception {
if (Src_File != null && DelayTime != null) {
logWriter.Info("产生Flash动画");
int width = 0;
int height = 0;
Shape[] image = new Shape[Src_File.length];
for (int i = 0; i < Src_File.length; i++) {
FileInputStream jpegIn = new FileInputStream(Src_File[i]);
int[] size = new int[2];
image[i] = ImageUtil.shapeForImage(jpegIn, size);
if (width < size[0])
width = size[0];
if (height < size[1])
height = size[1];
jpegIn.close();
}
Movie movie = new Movie(width, height, 1, 5, null);
for (int i = 0; i < image.length; i++) {
if (DelayTime[i] > 1000) {
for (int j = 0; j < (DelayTime[i]) / 1000; j++) {
Frame frame = movie.appendFrame();
frame.placeSymbol(image[i], 0, 0);
}
}
else {
Frame frame = movie.appendFrame();
frame.placeSymbol(image[i], 0, 0);
}
}
//Http输出
( (HttpServletResponse) Desc).setContentType(
"application/x-shockwave-flash");
( (HttpServletResponse) Desc).setHeader("Content-Disposition",
" filename=animate.swf");
ServletOutputStream out = ( (HttpServletResponse) Desc).getOutputStream();
movie.write(out);
out.flush();
out.close();
}
}
/**
* 向右旋转图片
* @param Src_file String 图片文件名
* @param angdeg double 角度
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Rotation(String Src_file, double angdeg) throws
Exception {
logWriter.Info("产生旋转图");
BufferedImage thumbImage = ImageIO.read(new File(Src_file));
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(angdeg), thumbImage.getWidth() / 2,
thumbImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.
TYPE_BILINEAR);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
op = null;
transform = null;
thumbImage = null;
return filteredImage;
}
/**
* 向右旋转图片
* @param thumbImage BufferedImage 图片
* @param angdeg double 旋转角度
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Rotation(BufferedImage thumbImage, double angdeg) throws
Exception {
logWriter.Info("产生旋转图");
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(angdeg), thumbImage.getWidth() / 2,
thumbImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.
TYPE_BILINEAR);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
op = null;
transform = null;
return filteredImage;
}
/**
* 产生图片边缘
* @param Src_file String 图片文件
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Edge(String Src_file) throws
Exception {
logWriter.Info("产生图片边缘");
BufferedImage thumbImage = ImageIO.read(new File(Src_file));
float[] elements = {
0.0f, -1.0f, 0.0f,
-1.0f, 4.f, -1.0f,
0.0f, -1.0f, 0.0f
};
Kernel kernel = new Kernel(3, 3, elements);
ConvolveOp op = new ConvolveOp(kernel);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
thumbImage = null;
op = null;
kernel = null;
elements = null;
return filteredImage;
}
/**
* 产生图片边缘
* @param thumbImage BufferedImage 图片
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Edge(BufferedImage thumbImage) throws
Exception {
logWriter.Info("产生图片边缘");
float[] elements = {
0.0f, -1.0f, 0.0f,
-1.0f, 4.f, -1.0f,
0.0f, -1.0f, 0.0f
};
Kernel kernel = new Kernel(3, 3, elements);
ConvolveOp op = new ConvolveOp(kernel);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
op = null;
kernel = null;
elements = null;
return filteredImage;
}
/**
* 产生胶片效果图
* @param Src_file String 图片文件
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Negative(String Src_file) throws
Exception {
logWriter.Info("产生胶片效果图");
BufferedImage thumbImage = ImageIO.read(new File(Src_file));
byte negative[] = new byte[256];
for (int i = 0; i < 256; i++)
negative[i] = (byte) (255 - i);
ByteLookupTable table = new ByteLookupTable(0, negative);
LookupOp op = new LookupOp(table, null);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
thumbImage = null;
op = null;
table = null;
return filteredImage;
}
/**
* 产生胶片效果图
* @param thumbImage BufferedImage 图片
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Negative(BufferedImage thumbImage) throws
Exception {
logWriter.Info("产生胶片效果图");
byte negative[] = new byte[256];
for (int i = 0; i < 256; i++)
negative[i] = (byte) (255 - i);
ByteLookupTable table = new ByteLookupTable(0, negative);
LookupOp op = new LookupOp(table, null);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
op = null;
table = null;
return filteredImage;
}
/**
* 变亮/暗效果
* @param Src_file String 图片文件
* @param weight 设置变换参数 越小越暗 例如 1.0f/9.0f
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Brighten(String Src_file, float weight) throws
Exception {
logWriter.Info("产生变亮/变暗效果图");
BufferedImage thumbImage = ImageIO.read(new File(Src_file));
float[] elements = new float[9];
for (int i = 0; i < 9; i++)
elements[i] = weight;
Kernel kernel = new Kernel(3, 3, elements);
ConvolveOp op = new ConvolveOp(kernel);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
thumbImage = null;
op = null;
kernel = null;
elements = null;
return filteredImage;
}
/**
* 变亮/暗效果
* @param thumbImage BufferedImage 图片
* @param weight float 设置变换参数 越小越暗 例如 1.0f/9.0f
* @return BufferedImage
* @throws Exception
*/
public static BufferedImage Brighten(BufferedImage thumbImage, float weight) throws
Exception {
logWriter.Info("产生变亮/变暗效果图");
float[] elements = new float[9];
for (int i = 0; i < 9; i++)
elements[i] = weight;
Kernel kernel = new Kernel(3, 3, elements);
ConvolveOp op = new ConvolveOp(kernel);
BufferedImage filteredImage
= new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
thumbImage.getType());
op.filter(thumbImage, filteredImage);
op = null;
kernel = null;
elements = null;
return filteredImage;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -