用java处理图片(压缩成小尺寸;加文字和logo水印)
来源:互联网 发布:尼特消防主机怎么编程 编辑:程序博客网 时间:2024/04/30 09:52
/***功能:压缩图片变成小尺寸***
*参数1:oImage:原图;*
*参数2:maxWidth:小尺寸宽度;*
*参数3:maxHeight:小尺寸长度;*
*参数4:newImageName:小尺寸图片存放的路径和新名字;*
*参数5:fileType:小尺寸图片类型(png,gif,jpg...)***/
private void compressImage(File oImage, int maxWidth, int maxHeight, String newImageName, String fileType) {
BufferedImage srcImage = ImageIO.read(oImage);;
int srcWidth = srcImage.getWidth(null);
int srcHeight = srcImage.getHeight(null);
if(srcWidth <= maxWidth && srcHeight <= maxHeight){
saveImage(srcImage);
return;
}
Image scaledImage = srcImage.getScaledInstance(srcWidth, srcHeight, Image.SCALE_SMOOTH);
double ratio = Math.min((double) maxWidth / srcWidth, (double) maxHeight / srcHeight);
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);
scaledImage = op.filter(srcImage, null);
saveImage((BufferedImage)scaledImage, fileType, new FileOutputStream(newImageName));// 存盘
}
private void saveImage(BufferedImage bi, String savePath, String fileType) throws IOException {
FileOutputStream out = new FileOutputStream(savePath);
ImageIO.write(bi, fileType, out);// 存盘
out.flush();
out.close();
}
/***功能:图片加文字水印***
*参数1:oImage:原图;*
*参数2:newImageName:加文字水印图片存放的路径和新名字;*
*参数3:fileType:加文字水印图片类型(png,gif,jpg...);
*参数4:waterText:文字水印的内容****/
private boolean pressText(File oImage, String newImageName, String fileType, String waterText) throws IOException{
BufferedImage originalImage = ImageIO.read(oImage);
int originalWidth = originalImage.getWidth(null);
int originalHeight = originalImage.getHeight(null);
if (originalWidth < 50 || originalHeight < 50){
return false;
}
if(waterText==null || waterText.trim().equals("")){
return false;
}
BufferedImage newImage = new BufferedImage(originalWidth, originalHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = newImage.createGraphics();
g.drawImage(originalImage, 0, 0, originalWidth, originalHeight, null);
g.setColor(Color.RED);
int fontSize = 13;
g.setFont(new Font("宋体", Font.PLAIN, fontSize));
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
int len = InitServlet.WATER_TEXT.length();
if(InitServlet.IS_WATER_CENTER==0){
g.drawString(InitServlet.WATER_TEXT, originalWidth-len*fontSize/2-6,originalHeight-6);
}else{
g.drawString(InitServlet.WATER_TEXT, (originalWidth-(len*fontSize))/2, (originalHeight-fontSize)/2);
}
g.dispose();
ImageIO.write(newImage, fileType, new FileOutputStream(newImageName));// 存盘
return true;
}
/***功能:图片加logo图片水印***
*参数1:oImage:原图;*
*参数2:newImageName:加logo图片水印存放的路径和新名字;*
*参数3:fileType:加logo图片水印图片类型(png,gif,jpg...);
*参数4:logoPath:logo水印图片的存放路径****/
private boolean pressImage(File oImage, String newImageName, String fileType, String logoPath) throws IOException{
File waterMarkImage = new File(logoPath);
if (!waterMarkImage.exists()) {
return false;
}
BufferedImage originalImage = ImageIO.read(oImage);
BufferedImage watermarkImage = ImageIO.read(waterMarkImage);
int originalWidth = originalImage.getWidth(null);
int originalHeight = originalImage.getHeight(null);
int watermarkWidth = watermarkImage.getWidth(null);
int watermarkHeight = watermarkImage.getHeight(null);
if (originalWidth <= watermarkWidth || originalHeight <= watermarkHeight || originalWidth < 50 || originalHeight < 50) {
return false;
}
BufferedImage newImage = new BufferedImage(originalWidth, originalHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = newImage.createGraphics();
g.drawImage(originalImage, 0, 0, originalWidth, originalHeight, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
if(InitServlet.IS_WATER_CENTER==0){
g.drawImage(watermarkImage, originalWidth-watermarkWidth-10, originalHeight-watermarkHeight-10, watermarkWidth, watermarkHeight, null);
}else{
g.drawImage(watermarkImage, (originalWidth-watermarkWidth)/2, (originalHeight-watermarkHeight)/2, watermarkWidth, watermarkHeight, null);
}
g.dispose();
ImageIO.write(newImage, fileType, new FileOutputStream(newImageName));// 存盘
return true;
}
- 用java处理图片(压缩成小尺寸;加文字和logo水印)
- java给图片加水印和文字
- 图片加文字印章和水印 Java
- java对图片的各种操作(压缩、加水印(文字或图片)、旋转)
- java图片加水印文字
- java给图片加水印,文字水印
- java-图片加水印,文字水印
- jsp,java加图片水印,文字水印
- 用php处理图片水印(文字水印和图片水印)
- java图片处理(文字水印、图片水印、缩放、补白)
- php对图片上传的处理以及图片加文字水印和图片水印的方法
- 上传图片加水印/logo(引用)
- 加文字水印和加图片水印的
- 图片加文字水印
- 图片加水印文字
- java给图片加文字水印
- ASP.NET图片上传,加水印文字和水印图片!
- PHP给图片加文字水印和图片水印
- 关于一道面试题的解答(华为公司python面试题,要求10分钟写出代码)
- ISTQB AL-TM连载系列07:以集体的智慧进行测试估算
- UIScrollView 滚动视图—IOS开发
- JavaFX 之弹跳球
- ubuntu10.04使用小结
- 用java处理图片(压缩成小尺寸;加文字和logo水印)
- 项目开发规范
- JS Prototype constructor 转载之一
- 获取网卡MAC、硬盘序列号、CPU ID、BIOS编号
- 库 lib 工程引入 dll 工程引入
- 使用JavaScript的XMLHttpRequest发送请求
- JS prototype constructor转载之二
- JS prototype constructor转载之三
- UIKeyboard键盘相关知识点-IOS开发