private void createThumbnail(String filename, int thumbWidth,
int thumbHeight, int
quality, String outFilename)
throws InterruptedException,
FileNotFoundException, IOException
{
// load image from
filename
Image image =
Toolkit.getDefaultToolkit().getImage(filename);
MediaTracker mediaTracker = new
MediaTracker(new Container());
mediaTracker.addImage(image,
0);
mediaTracker.waitForID(0);
// use this to test for errors at
this point: System.out.println
(mediaTracker.isErrorAny());
// determine thumbnail size from
WIDTH and HEIGHT
double
thumbRatio = (double)thumbWidth / (double)thumbHeight;
int imageWidth = image.getWidth
(null);
int imageHeight
= image.getHeight(null);
double imageRatio = (double)imageWidth / (double)imageHeight;
if (thumbRatio < imageRatio)
{
thumbHeight
= (int)(thumbWidth / imageRatio);
} else {
thumbWidth =
(int)(thumbHeight * imageRatio);
}
// draw original image to thumbnail
image object and
//
scale it to the new size on-the-fly
BufferedImage thumbImage = new
BufferedImage(thumbWidth, thumbHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D =
thumbImage.createGraphics();
graphics2D.setRenderingHint
(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0,
thumbWidth, thumbHeight, null);
// save thumbnail image to
outFilename
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream
(outFilename));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param =
encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min
(quality, 100));
param.setQuality((float)quality / 100.0f, false);
encoder.setJPEGEncodeParam
(param);
encoder.encode
(thumbImage);
out.close
();
}
private void createThumbnail(String filename, int thumbWidth, int
thumbHeight, int
quality, String outFilename)
throws InterruptedException,
FileNotFoundException, IOException
{
// load image from
filename
Image image = Toolkit.getDefaultToolkit().getImage
(filename);
MediaTracker mediaTracker = new MediaTracker(new
Container());
mediaTracker.addImage(image,
0);
mediaTracker.waitForID(0);
// use this to test
for errors at this point: System.out.println
(mediaTracker.isErrorAny());
// determine thumbnail size from WIDTH and
HEIGHT
double thumbRatio = (double)thumbWidth / (double)
thumbHeight;
int imageWidth = image.getWidth
(null);
int imageHeight = image.getHeight
(null);
double imageRatio = (double)imageWidth / (double)
imageHeight;
if (thumbRatio < imageRatio)
{
thumbHeight = (int)(thumbWidth /
imageRatio);
} else {
thumbWidth = (int)
(thumbHeight * imageRatio);
}
// draw original image to thumbnail image object
and
// scale it to the new size on-the-
fly
BufferedImage thumbImage = new BufferedImage(thumbWidth,
thumbHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D =
thumbImage.createGraphics();
graphics2D.setRenderingHint
(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImag
e(image, 0, 0, thumbWidth, thumbHeight, null);
// save thumbnail image to
outFilename
BufferedOutputStream out = new BufferedOutputStream(new
FileOutputStream(outFilename));
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param =
encoder.getDefaultJPEGEncodeParam
(thumbImage);
quality = Math.max(0, Math.min(quality,
100));
param.setQuality((float)quality / 100.0f,
false);
encoder.setJPEGEncodeParam
(param);
encoder.encode(thumbImage);
out.close
();
}
相关推荐
20个开发人员非常有用的Java功能代码
20个开发人员非常有用的Java功能代码20个开发人员非常有用的Java功能代码20个开发人员非常有用的Java功能代码
20个开发人员有用的Java功能代码 20个开发人员有用的Java功能代码 20个开发人员有用的Java功能代码
20个开发人员非常有用的Java功能代码(整理版)
20个开发人员非常有用的Java功能代码 .zip
很有帮助的 这一片段显示如何将一个java util Date转换成sql Date用于数据库
完整的代码示例,Java开发人员必备,涵盖日常Java开发经常要用到的功能代码。
Java开发人员必不可少的代码仓库,包含各种常用的功能,可以大大提高开发效率。
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
代码通俗易懂,只要稍微有点java常识的人就可以使用本软件来开发大型的java项目,本工作室的开发团队汲取多位资深开发人员多年的项目开发经验开发出本软件,目前使用本软件的模式开发的项目不下十个,全部是政府部门...
《Java项目开发案例精粹》是目前流行的Java开发的案例...《Java项目开发案例精粹》既可以作为Java初学者的项目培训教材,也可以作为具有一定编程经验的Java程序开发人员的参考书,还适合Java自学者和大专院校学生阅读。
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
代码简洁,功能简单实用,安装一键式;站内搜索是使用lucene3.3的技术;真正的开源;真正的免费;非常适合互联网中小型网站的应用。 51JAVACMS是一款基于JAVA平台研发的内容管理系统,依托JAVA的高效、安全、稳定等...
应用软件开发过程中80%的重复工作将由JFrame来完成,20%的特殊业务逻辑代码由开发人员在生成的代码基础上补充完善。 JFrame应用软件开发平台就如“一套毛胚房”,提供了软件的基本框架和相关基础设施;软件开发团队...
JCreator 专业版是一款适合于各个 Java 语言编程开发人员的IDE工具。 她为使用者提供了大量强劲的功能,例如: 项目管理、工程模板、代码完成、调试接口、高亮语法编辑、使用向导以及完全可自定义的用户界面。 ...