- 浏览: 772428 次
- 性别:
- 来自: 太原
博客专栏
-
Java编程Step-by...
浏览量:161296
文章分类
最新评论
-
liuwei1981:
尘土飞扬 写道取整的函数,返回值是double?测试下就能看出 ...
86.Math类的使用 -
尘土飞扬:
取整的函数,返回值是double?
86.Math类的使用 -
尘土飞扬:
终于清楚了Date和Calendar的来龙去脉谢谢
90.Java日期处理 -
谁说我不是会员:
liuwei1981 写道hupu_2014 写道根据你的执行 ...
65.对象的构造以及初始化 -
谁说我不是会员:
有的地方能优化,有的不能,不能一概而论。
有必要用StringBuilder的append代替String的+字符串连接运算么
public static boolean compressImage(File file, String directoryFileName, int width, int height, boolean proportion) { boolean ret = false; FileOutputStream fileOutputStream = null; try { if (file == null || directoryFileName == null) { return ret; } fileOutputStream = new FileOutputStream(new File(directoryFileName)); Image image = ImageIO.read(file); if (image.getWidth(null) == -1) { return ret; } int newWidth = 0; int newHeight = 0; if (image.getWidth(null) > width || image.getHeight(null) > height) { if (proportion) { int rate1 = image.getWidth(null) / width; int rate2 = image.getHeight(null) / height; int rate = rate1 > rate2 ? rate1 : rate2; newWidth = image.getWidth(null) / rate; newHeight = image.getHeight(null) / rate; } else { newWidth = width; newHeight = height; } } else { newWidth = image.getWidth(null); newHeight = image.getHeight(null); } BufferedImage bufferedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); bufferedImage.getGraphics().drawImage( image.getScaledInstance(newWidth, newHeight, image.SCALE_SMOOTH), 0, 0, null); JPEGImageEncoder encoder = JPEGCodec .createJPEGEncoder(fileOutputStream); encoder.encode(bufferedImage); fileOutputStream.close(); ret = true; } catch (Exception e) { e.printStackTrace(); } finally { if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } return ret; }
正在的改版的网站需要增加一个功能,对会员用户上传的图片选择一部分进行首页处理,虽然在用户上传图片时候已经对上传图片大小进行了限制,但限制的大小,如果提交到首页显示,很影响首页打开的速度,所以,需要将选择进行首页显示的图片重新进行缩放处理,以适合首页显示。
网上找了很多资料,但不知道为什么只对jpeg格式的图片处理有效,其他的都会报格式异常错误,终于找到这个类,对基本的格式图片都可以进行处理:
package com.common.helper; import java.io.*; import java.util.*; import com.sun.image.codec.jpeg.*; import java.awt.image.*; import java.awt.*; import java.net.*; import java.applet.*; import java.sql.*; //缩略图类, //本java类能将jpg图片文件,进行等比或非等比的大小转换。 //具体使用方法 //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true)) public class DwindlePic { String InputDir; //输入图路径 String OutputDir; //输出图路径 String InputFileName; //输入图文件名 String OutputFileName; //输出图文件名 int OutputWidth = 80; //默认输出图片宽 int OutputHeight = 80; //默认输出图片高 int rate = 0; boolean proportion = true; //是否等比缩放标记(默认为等比缩放) public DwindlePic() { //初始化变量 InputDir = ""; OutputDir = ""; InputFileName = ""; OutputFileName = ""; OutputWidth = 80; OutputHeight = 80; rate = 0; } public boolean s_pic() { // BufferedImage image; // String NewFileName; //建立输出文件对象 File file = new File(OutputDir + OutputFileName); FileOutputStream tempout = null; try { tempout = new FileOutputStream(file); } catch (Exception ex) { System.out.println(ex.toString()); } Image img = null; Toolkit tk = Toolkit.getDefaultToolkit(); Applet app = new Applet(); MediaTracker mt = new MediaTracker(app); try { img = tk.getImage(InputDir + InputFileName); mt.addImage(img, 0); mt.waitForID(0); } catch (Exception e) { e.printStackTrace(); } if (img.getWidth(null) == -1) { // System.out.println(" can't read,retry!" + "<BR>"); return false; } else { int new_w; int new_h; if (this.proportion == true) { //判断是否是等比缩放. //为等比缩放计算输出的图片宽度及高度 double rate1 = ((double) img.getWidth(null)) / (double) OutputWidth + 0.1; double rate2 = ((double) img.getHeight(null)) / (double) OutputHeight + 0.1; double rate = rate1 > rate2 ? rate1 : rate2; new_w = (int) (((double) img.getWidth(null)) / rate); new_h = (int) (((double) img.getHeight(null)) / rate); } else { new_w = OutputWidth; //输出的图片宽度 new_h = OutputHeight; //输出的图片高度 } BufferedImage buffImg = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB); Graphics g = buffImg.createGraphics(); g.setColor(Color.white); g.fillRect(0, 0, new_w, new_h); g.drawImage(img, 0, 0, new_w, new_h, null); g.dispose(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout); try { encoder.encode(buffImg); tempout.close(); } catch (IOException ex) { System.out.println(ex.toString()); } } return true; } public boolean s_pic(String InputDir, String OutputDir, String InputFileName, String OutputFileName) { //输入图路径 this.InputDir = InputDir; //输出图路径 this.OutputDir = OutputDir; //输入图文件名 this.InputFileName = InputFileName; //输出图文件名 this.OutputFileName = OutputFileName; return s_pic(); } public boolean s_pic(String InputDir, String OutputDir, String InputFileName, String OutputFileName, int width, int height, boolean gp) { //输入图路径 this.InputDir = InputDir; //输出图路径 this.OutputDir = OutputDir; //输入图文件名 this.InputFileName = InputFileName; //输出图文件名 this.OutputFileName = OutputFileName; //设置图片长宽 setW_H(width, height); //是否是等比缩放 标记 this.proportion = gp; return s_pic(); } public void setInputDir(String InputDir) { this.InputDir = InputDir; } public void setOutputDir(String OutputDir) { this.OutputDir = OutputDir; } public void setInputFileName(String InputFileName) { this.InputFileName = InputFileName; } public void setOutputFileName(String OutputFileName) { this.OutputFileName = OutputFileName; } public void setOutputWidth(int OutputWidth) { this.OutputWidth = OutputWidth; } public void setOutputHeight(int OutputHeight) { this.OutputHeight = OutputHeight; } public void setW_H(int width, int height) { this.OutputWidth = width; this.OutputHeight = height; } public static void main(String[] a) { //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度) DwindlePic mypic = new DwindlePic(); System.out.println( mypic.s_pic("c:/", "d:/", "aa.bmp", "wwww.jpg", 120, 80, true)); } }
在使用时将用户上传的图片进行压缩处理,再转存到首页的图片目录中。over!
评论
4 楼
Shmily奕蝶
2012-02-17
直接用这段代码就可以啦??
3 楼
east_java
2009-10-09
缩放后 怎么变模糊了。
2 楼
liuwei1981
2008-07-22
什么意思?
1 楼
zhongxun20
2008-07-21
都显示不了[color=red][/color][b][/b][img][/img]
发表评论
-
cas4实现sso(一)cas简介
2015-01-15 16:59 973sso(单点登录)在实际的应用开发中经常会用到,特别是软件 ... -
为什么使用Java消息服务
2014-03-31 21:36 818Java消息服务有着众多 ... -
SSH+ExtJs完成CKEditor富文本编辑器整合
2013-05-13 11:31 2424最近根据项目需要,在当前项目开发框架中整合入了CKEdi ... -
4.判断jbpm流程实例流转完毕
2013-03-11 10:41 2945在使用jbpm4.x进行业务 ... -
3.JBPM与SSH框架整合
2013-02-27 10:13 1010使用Jbpm进行软件开发 ... -
2.Jbpm环境搭建
2012-12-10 15:28 13321.准备工作 首先我 ... -
90.Java日期处理
2012-12-07 09:16 29021 Date类 在编 ... -
89.文件操作初步
2012-12-06 09:19 22351 基本文件操作 ... -
88.容器类
2012-12-05 09:20 1982一个容器(container)是 ... -
87.String类
2012-12-04 09:24 1671在Java中,使用String和StringBuffer来表示 ... -
1.Jbpm初步了解
2012-12-03 10:40 885因为工作的关系,使用到了Jbpm来进行工作流程的应用开发。开始 ... -
86.Math类的使用
2012-12-03 10:15 1543在实际编程中,大量的数据运算是不可避免的。在Java类库中,已 ... -
85.IO操作入门
2012-11-30 09:25 1465多数应用程序在运行过程中要与用户进行交互,通常的交互方式是:用 ... -
83.Java编程语法基础说明
2012-11-22 09:17 1663到此为止,有关Java编程基础语法部分的内容就结束了。 ... -
82.处理异常
2012-11-20 09:39 21351.常见异常 下 ... -
81.Java异常概述
2012-11-19 09:40 1447没有人敢保证说它写的程序永远没有错。即使写的程序没有错,也不要 ... -
80.Java修饰符适用范围
2012-11-14 09:50 1634我们学习了不少的修饰符,如用于访问控制的public、prot ... -
79.内部类
2012-11-13 09:36 1474今天来说说一个非常 ... -
78.对象造型
2012-11-12 09:44 1441在讲述数据类型的时候,我们已经知道,各种简单数据类型之间是可以 ... -
77.instanceof运算符
2012-11-12 09:42 1346Java语言的多态性机制导致了引用变量的声明类型和其实际引用对 ...
相关推荐
java图片缩放 java缩略图 缩略图 java图片处理
本文将深入探讨如何使用Java进行图片缩放处理,并确保在压缩过程中尽可能减少失真,同时允许自定义压缩后的图片质量。 首先,我们需要了解Java中的核心库`java.awt.image`和`javax.imageio`,它们提供了处理图像的...
要使用ImageMagick在Java中进行图片缩放,首先需要在系统中安装ImageMagick,然后添加`Imagemagick-Java`库到项目中。这个库通常以JAR文件的形式提供,可以将其添加到项目的类路径中。 接下来,我们需要了解如何...
在Java编程语言中,处理图片是一项常见的任务,包括图片的缩放、比例调整以及压缩等操作。这些功能在各种应用场景中都有所体现,比如网页设计、图像处理软件、移动应用等。下面我们将深入探讨Java中如何进行图片的...
以上就是Java处理图片的一些核心知识点,具体应用时需要结合实际情况进行调整。在压缩包中的"java图片大小转换"文件中,很可能包含了实现这些功能的示例代码和使用说明,可以参考学习以加深理解。在实际开发中,我们...
在Java编程领域,图片处理是一项常见的任务,其中图像缩放是尤为重要的操作。当我们需要调整图片大小,以适应不同的应用场景,如网页、移动设备或打印等,就需要进行图像缩放。本文将深入探讨Java中实现图像缩放的...
高清缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等 功能非常强大,并且很清晰,请给好评:)
在Java编程中,图片缩放是一项常见的任务,特别是在开发图形用户界面(GUI)或处理图像数据时。这个主题涉及到图像处理的基本概念、Java中的图像API以及如何使用它们来实现缩放功能。以下是对这一主题的详细说明: ...
以上就是使用Java AWT进行图片缩放的基本步骤。在实际应用中,可能还需要考虑性能优化、异常处理以及支持不同格式的图片文件等细节。通过调整缩放算法和质量参数,我们可以获得更高质量的缩放结果。学习和掌握这些...
Java GIF图片缩放是开发过程中常见的一项任务,尤其是在处理动态图像时。GIF是一种支持动画的格式,广泛用于网络上。在Java中处理GIF图片,我们通常会使用到一些库,比如`gif4j`,这是一个轻量级且功能强大的Java库...
根据提供的文件信息,我们可以总结出以下关于“Java图片缩放类”的相关知识点: ### Java 图片缩放类概述 在Java开发中,处理图像时经常需要进行缩放操作以适应不同的显示需求或优化资源占用。Java 提供了多种库来...
### Java高清处理图片:利用ImageMagick提升图片质量和效率 #### 背景与需求 在实际项目开发中,图片处理是一项常见的需求,包括但不限于图片的压缩、尺寸调整以及添加水印等操作。传统的Java库虽然能够实现这些...
网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想。 为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架。 特此拿出来与大家...
在Java编程语言中,处理图像是一项常见的任务,其中包括图片的缩放和拉伸。本文将深入探讨如何使用Java实现这一功能,特别是在实际项目中的应用。标题"java 图片的缩放与拉伸"直指核心问题,即如何改变图片的尺寸以...
包含了一些java对图片操作处理的方法: 1.给图片添加图片水印 2.给图片添加文字水印 3.图片缩放 *主方法测试代码简单易懂
在Authorware这个强大的多媒体创作工具中,图片缩放是一个常用的操作,它可以帮助用户根据需要调整图像的大小,适应不同的展示需求。以下将详细介绍如何在Authorware中进行图片缩放以及相关的知识点。 一、...
### Java处理上传后的图片知识点详解 #### 一、图片上传及处理概述 在现代Web应用中,用户上传图片的功能十分常见。为了优化用户体验并减轻服务器存储压力,通常会在图片上传后进行一系列处理,如压缩、缩放等。...
Java提供了多种库来处理图片压缩,如Apache Commons Imaging(旧称Sanselan)和ImageMagick的Java绑定。其中,Java Advanced Imaging (JAI) 是Java标准扩展的一部分,它提供了丰富的图像处理功能,包括压缩。 使用...
这个“图片缩放剪切处理代码”主题涉及到的是使用JavaScript、ASP、PHP和可能的JSP技术来实现这些功能。下面我们将深入探讨这些技术及其在图片处理中的应用。 首先,JavaScript(JS)是一种广泛使用的客户端脚本...