import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.Color;
//生成缩略图和给图上打上公司logo
public static void main(String[] args) throws IOException {
//源文件,必须是有文件
String pathS="D:/tdeng/My Pictures/showPhoto.gif";
//目标文件
String pathD="D:/temp/showPhotomini.gif";
//拷贝文件
copyfile(pathS,pathD);
//----------------------------------------------
//生成缩小mimi图
File stadimgfile2 = new File(pathD);
//图片缓存
BufferedImage img2 = ImageIO.read(stadimgfile2);
//得到图片的宽和高
double width = img2.getWidth();
double height = img2.getHeight();
int miniwidth = 120;//缩略图宽度
int miniheight = 90;//缩略图高度
double ratew = miniwidth / width;
double rateh = miniheight / height;
//获得适合的缩放比率,即以在规定缩略尺寸中完整显示图片内容的同时又保证最大的缩放比率
double rate = Math.min(ratew, rateh);
rate = (Math.rint((rate * 100) + 0.5)) / 100;
BufferedImage imgmini = new java.awt.image.BufferedImage(miniwidth, miniheight,BufferedImage.TYPE_USHORT_565_RGB);
Graphics2D gmini = imgmini.createGraphics();
gmini.setBackground(Color.WHITE);
gmini.clearRect(0, 0, miniwidth, miniheight);
AffineTransform trans = new AffineTransform();
trans.scale(rate, rate);
AffineTransformOp op = new AffineTransformOp(trans, AffineTransformOp.TYPE_BILINEAR);
gmini.drawImage(img2, op, (int) (miniwidth - (width * rate)) / 2, (int) (miniheight - (height * rate)) / 2);
ImageIO.write(imgmini, "jpg", stadimgfile2);
//---------------------------------------------------------
//mimi图加水印
BufferedImage img3 = ImageIO.read(stadimgfile2);
int mimi_width2 = img3.getWidth();
int mimi_height2 = img3.getHeight();
BufferedImage imgmimi2 = new java.awt.image.BufferedImage(mimi_width2, mimi_height2,
BufferedImage.TYPE_USHORT_565_RGB);
//logo文件的位置,必须是真是的
String logoFile = "D:/tdeng/My Pictures/logo.gif";
BufferedImage watermark3 = ImageIO.read(new File(logoFile));
Graphics2D gmimi2 = imgmimi2.createGraphics();
gmimi2.drawImage(img3, null, 0, 0);
gmimi2.drawImage(watermark3, null, mimi_width2 - watermark3.getWidth(), mimi_height2 - watermark3.getHeight());
ImageIO.write(imgmimi2, "jpg", stadimgfile2);
}
// 使用FileInputStream和FileOuStream
public static void copyfile(String pathSrc,String pathDest) throws IOException
{
FileInputStream fi=new FileInputStream(pathSrc);
FileOutputStream fo=new FileOutputStream(pathDest);
byte data[]=new byte[fi.available()];
fi.read(data);
fo.write(data);
fi.close();
fo.close();
}
分享到:
相关推荐
在Java编程环境中,处理图像是一项常见的任务,包括创建缩略图、添加水印、裁剪以及转换图片格式。这些操作可以用于网站上的图像展示、移动应用的资源优化或任何需要图像处理的项目。"Thumbnailator"是Java的一个...
首先,生成缩略图是减少图片文件大小并优化网站性能的重要手段。当用户上传大尺寸图片时,为了适应不同设备的显示需求和减少页面加载时间,通常需要将图片转换为较小尺寸的缩略图。这可以通过各种图像处理库或编程...
1. **源代码**:用于生成缩略图和添加水印的程序代码,可能包括C++、Java、Python、JavaScript等不同编程语言的实现,展示了如何通过编程来处理图像。 2. **库文件**:可能包含一些用于图像处理的第三方库,如...
标题“上传缩略图水印”涉及到的是在IT领域中图像...综上所述,"上传缩略图水印"是一个涵盖图像处理、缩略图生成、水印添加等多个技术点的专题,它在实际应用中扮演着重要角色,并且可以通过各种编程语言和工具来实现。
在Java编程中,实现图片上传并进行切割是一个常见的需求,特别是在网页设计中,为了保证图片在不同设备和浏览器上的展示效果,可能需要对图片进行适当的裁剪和处理。本篇文章将详细讲解如何在Java中实现这个功能。 ...
`Thumbs.db`是一个Windows系统自动生成的文件,用于缓存图片缩略图,不直接参与程序运行,但可能是为了方便查看logo.gif等图片。 `logo.gif`是网站的标识图像,通常显示在页面头部,提供品牌识别。 最后,`proxool...
4. **Thumbs.db**:这是一个Windows系统中的文件,用于存储缩略图元数据,方便用户在资源管理器中预览图片。在这个项目中,它可能用于展示上传文件的预览图像。 5. **reg.gif、logo.gif、m-list.gif、m-box.gif、m-...