- 浏览: 332735 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
fanjf:
因为不是太懂,所以摘录!
DataStage---向目的库插入时出现问题:MLOG$ -
fanjf:
oracle 位图索引:位图索引: 解决某一表数据很多,但某一 ...
【转】 mysql 添加列,修改列,删除列。 -
fanjf:
创建索引:CREATE TABLE mm (m1 CHAR(1 ...
【转】 mysql 添加列,修改列,删除列。 -
fanjf:
查询mysql 的表emp 的约束:
SELECT * FR ...
【转】 mysql 添加列,修改列,删除列。 -
fanjf:
为什么 update 不报错,结果为空?
关于MYSQL 检查check约束
支持将Image的宽度、高度缩放到指定width、height,并保存在指定目录
通过目标对象的大小和标准(指定)大小计算出图片缩小的比例
可以设置图片缩放质量,并且可以根据指定的宽高缩放图片
源码:
package com.hoo.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* <b>function:</b> 缩放图片工具类,创建缩略图、伸缩图片比例
* @author hoojo
* @createDate 2012-2-3 上午10:08:47
* @file ScaleImageUtils.java
* @package com.hoo.util
* @blog http://blog.csdn.net/IBM_hoojo
* http://hoojo.cnblogs.com
* @email hoojo_@126.com
* @version 1.0
*/
public abstract class ScaleImageUtils {
private static final float DEFAULT_SCALE_QUALITY = 1f;
private static final String DEFAULT_IMAGE_FORMAT = ".jpg" ; // 图像文件的格式
private static final String DEFAULT_FILE_PATH = "C:/temp-" ;
/**
* <b>function:</b> 设置图片压缩质量枚举类;
* Some guidelines: 0.75 high quality、0.5 medium quality、0.25 low quality
* @author hoojo
* @createDate 2012-2-7 上午11:31:45
* @file ScaleImageUtils.java
* @package com.hoo.util
* @project JQueryMobile
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public enum ImageQuality {
max(1.0f), high(0.75f), medium(0.5f), low(0.25f);
private Float quality;
public Float getQuality() {
return this .quality;
}
ImageQuality(Float quality) {
this .quality = quality;
}
}
private static Image image;
/**
* <b>function:</b> 通过目标对象的大小和标准(指定)大小计算出图片缩小的比例
* @author hoojo
* @createDate 2012-2-6 下午04:41:48
* @param targetWidth 目标的宽度
* @param targetHeight 目标的高度
* @param standardWidth 标准(指定)宽度
* @param standardHeight 标准(指定)高度
* @return 最小的合适比例
*/
public static double getScaling(double targetWidth, double targetHeight, double standardWidth, double standardHeight) {
double widthScaling = 0d;
double heightScaling = 0d;
if (targetWidth > standardWidth) {
widthScaling = standardWidth / (targetWidth * 1.00d);
} else {
widthScaling = 1d;
}
if (targetHeight > standardHeight) {
heightScaling = standardHeight / (targetHeight * 1.00d);
} else {
heightScaling = 1d;
}
return Math.min(widthScaling, heightScaling);
}
/**
* <b>function:</b> 将Image的宽度、高度缩放到指定width、height,并保存在savePath目录
* @author hoojo
* @createDate 2012-2-6 下午04:54:35
* @param width 缩放的宽度
* @param height 缩放的高度
* @param savePath 保存目录
* @param targetImage 即将缩放的目标图片
* @return 图片保存路径、名称
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(int width, int height, String savePath, Image targetImage) throws ImageFormatException, IOException {
width = Math.max(width, 1);
height = Math.max(height, 1);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(targetImage, 0, 0, width, height, null);
if (savePath == null || "" .equals(savePath)) {
savePath = DEFAULT_FILE_PATH + System.currentTimeMillis() + DEFAULT_IMAGE_FORMAT;
}
FileOutputStream fos = new FileOutputStream(new File(savePath));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(image);
image.flush();
fos.flush();
fos.close();
return savePath;
}
/**
* <b>function:</b> 可以设置图片缩放质量,并且可以根据指定的宽高缩放图片
* @author hoojo
* @createDate 2012-2-7 上午11:01:27
* @param width 缩放的宽度
* @param height 缩放的高度
* @param quality 图片压缩质量,最大值是1; 使用枚举值:{@link ImageQuality}
* Some guidelines: 0.75 high quality、0.5 medium quality、0.25 low quality
* @param savePath 保存目录
* @param targetImage 即将缩放的目标图片
* @return 图片保存路径、名称
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(int width, int height, Float quality, String savePath, Image targetImage) throws ImageFormatException, IOException {
width = Math.max(width, 1);
height = Math.max(height, 1);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(targetImage, 0, 0, width, height, null);
if (savePath == null || "" .equals(savePath)) {
savePath = DEFAULT_FILE_PATH + System.currentTimeMillis() + DEFAULT_IMAGE_FORMAT;
}
FileOutputStream fos = new FileOutputStream(new File(savePath));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam encodeParam = JPEGCodec.getDefaultJPEGEncodeParam(image);
if (quality == null || quality <= 0) {
quality = DEFAULT_SCALE_QUALITY;
}
/** 设置图片压缩质量 */
encodeParam.setQuality(quality, true);
encoder.encode(image, encodeParam);
image.flush();
fos.flush();
fos.close();
return savePath;
}
/**
* <b>function:</b> 通过指定大小和图片的大小,计算出图片缩小的合适大小
* @author hoojo
* @createDate 2012-2-6 下午05:53:10
* @param width 指定的宽度
* @param height 指定的高度
* @param image 图片文件
* @return 返回宽度、高度的int数组
*/
public static int [] getSize(int width, int height, Image image) {
int targetWidth = image.getWidth(null);
int targetHeight = image.getHeight(null);
double scaling = getScaling(targetWidth, targetHeight, width, height);
long standardWidth = Math.round(targetWidth * scaling);
long standardHeight = Math.round(targetHeight * scaling);
return new int [] { Integer.parseInt(Long.toString(standardWidth)), Integer.parseInt(String.valueOf(standardHeight)) };
}
/**
* <b>function:</b> 通过指定的比例和图片对象,返回一个放大或缩小的宽度、高度
* @author hoojo
* @createDate 2012-2-7 上午10:27:59
* @param scale 缩放比例
* @param image 图片对象
* @return 返回宽度、高度
*/
public static int [] getSize(float scale, Image image) {
int targetWidth = image.getWidth(null);
int targetHeight = image.getHeight(null);
long standardWidth = Math.round(targetWidth * scale);
long standardHeight = Math.round(targetHeight * scale);
return new int [] { Integer.parseInt(Long.toString(standardWidth)), Integer.parseInt(String.valueOf(standardHeight)) };
}
public static int [] getSize(int width, Image image) {
int targetWidth = image.getWidth(null);
int targetHeight = image.getHeight(null);
long height = Math.round((targetHeight * width) / (targetWidth * 1.00f));
return new int [] { width, Integer.parseInt(String.valueOf(height)) };
}
public static int [] getSizeByHeight(int height, Image image) {
int targetWidth = image.getWidth(null);
int targetHeight = image.getHeight(null);
long width = Math.round((targetWidth * height) / (targetHeight * 1.00f));
return new int [] { Integer.parseInt(String.valueOf(width)), height };
}
/**
*
* <b>function:</b> 将指定的targetFile图片文件的宽度、高度大于指定width、height的图片缩小,并保存在savePath目录
* @author hoojo
* @createDate 2012-2-6 下午04:57:02
* @param width 缩小的宽度
* @param height 缩小的高度
* @param savePath 保存目录
* @param targetImage 改变的目标图片
* @return 图片保存路径、名称
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(int width, int height, String savePath, File targetFile) throws ImageFormatException, IOException {
image = ImageIO.read(targetFile);
int [] size = getSize(width, height, image);
return resize(size[0], size[1], savePath, image);
}
/**
*
* <b>function:</b> 将指定的targetURL网络图片文件的宽度、高度大于指定width、height的图片缩小,并保存在savePath目录
* @author hoojo
* @createDate 2012-2-6 下午04:57:07
* @param width 缩小的宽度
* @param height 缩小的高度
* @param savePath 保存目录
* @param targetImage 改变的目标图片
* @return 图片保存路径、名称
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(int width, int height, String savePath, URL targetURL) throws ImageFormatException, IOException {
image = ImageIO.read(targetURL);
int [] size = getSize(width, height, image);
return resize(size[0], size[1], savePath, image);
}
/**
* <b>function:</b> 将一个本地的图片文件按照指定的比例进行缩放
* @author hoojo
* @createDate 2012-2-7 上午10:29:18
* @param scale 缩放比例
* @param savePath 保存文件路径、名称
* @param targetFile 本地图片文件
* @return 新的文件名称
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(float scale, String savePath, File targetFile) throws ImageFormatException, IOException {
image = ImageIO.read(targetFile);
int [] size = getSize(scale, image);
return resize(size[0], size[1], savePath, image);
}
/**
* <b>function:</b> 将一个网络图片文件按照指定的比例进行缩放
* @author hoojo
* @createDate 2012-2-7 上午10:30:56
* @param scale 缩放比例
* @param savePath 保存文件路径、名称
* @param targetFile 本地图片文件
* @return 新的文件名称
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(float scale, String savePath, URL targetURL) throws ImageFormatException, IOException {
image = ImageIO.read(targetURL);
int [] size = getSize(scale, image);
return resize(size[0], size[1], savePath, image);
}
/**
* <b>function:</b> 按照固定宽度进行等比缩放本地图片
* @author hoojo
* @createDate 2012-2-7 上午10:49:56
* @param width 固定宽度
* @param savePath 保存路径、名称
* @param targetFile 本地目标文件
* @return 返回保存路径
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(int width, String savePath, File targetFile) throws ImageFormatException, IOException {
image = ImageIO.read(targetFile);
int [] size = getSize(width, image);
return resize(size[0], size[1], savePath, image);
}
/**
* <b>function:</b> 按照固定宽度进行等比缩放网络图片
* @author hoojo
* @createDate 2012-2-7 上午10:50:52
* @param width 固定宽度
* @param savePath 保存路径、名称
* @param targetFile 本地目标文件
* @return 返回保存路径
* @throws ImageFormatException
* @throws IOException
*/
public static String resize(int width, String savePath, URL targetURL) throws ImageFormatException, IOException {
image = ImageIO.read(targetURL);
int [] size = getSize(width, image);
return resize(size[0], size[1], savePath, image);
}
/**
*
* <b>function:</b> 按照固定高度进行等比缩放本地图片
* @author hoojo
* @createDate 2012-2-7 上午10:51:17
* @param height 固定高度
* @param savePath 保存路径、名称
* @param targetFile 本地目标文件
* @return 返回保存路径
* @throws ImageFormatException
* @throws IOException
*/
public static String resizeByHeight(int height, String savePath, File targetFile) throws ImageFormatException, IOException {
image = ImageIO.read(targetFile);
int [] size = getSizeByHeight(height, image);
return resize(size[0], size[1], savePath, image);
}
/**
* <b>function:</b> 按照固定高度进行等比缩放网络图片
* @author hoojo
* @createDate 2012-2-7 上午10:52:23
* @param height 固定高度
* @param savePath 保存路径、名称
* @param targetFile 本地目标文件
* @return 返回保存路径
* @throws ImageFormatException
* @throws IOException
*/
public static String resizeByHeight(int height, String savePath, URL targetURL) throws ImageFormatException, IOException {
image = ImageIO.read(targetURL);
int [] size = getSizeByHeight(height, image);
return resize(size[0], size[1], savePath, image);
}
/**
* <b>function:</b>
* @author hoojo
* @createDate 2012-2-3 上午10:08:47
* @param args
* @throws IOException
* @throws MalformedURLException
* @throws ImageFormatException
*/
public static void main(String[] args) throws ImageFormatException, MalformedURLException, IOException {
System.out.println(ScaleImageUtils.resize(140, 140, null, new URL("http://www.open-open.com/lib/images/logo.jpg" )));
ScaleImageUtils.resize(100, 100, ImageQuality.high.getQuality(), null, ImageIO.read(new URL("http://www.open-open.com/lib/images/logo.jpg" )));
}
}
版权所有,转载请注明出处
本文出自:
http://www.cnblogs.com/hoojo/archive/2012/02/08/2342608.html
发表评论
-
JAVA 统一追加扩展名类
2014-07-07 15:34 979最近有人反应某云盘,无法上传视频,我也倍受困扰,后来发现MD ... -
java中替换字符以及回车换行
2014-02-14 13:47 1910[java] view plaincopy 1. / ... -
[转]java中替换字符以及回车换行
2013-11-13 09:18 3399//第一种方式 import java.util.r ... -
Caused by: java.lang.OutOfMemoryError: PermGen space
2013-07-30 16:43 675Caused by: java.lang.OutOfMemo ... -
nested exception is java.sql.BatchUpdateException: 批处理中出现错误: ORA-00972: 标识符过长
2013-07-30 16:21 4437最近开发项目,跑批处理遇到一个问题: 2013-07-28 ... -
软件架构师必读书籍--------软件架构师推荐书籍系列
2012-09-23 17:02 4089一、架构篇 1. 《Softw ... -
【异常】Error configuring application listener of class xxx.xxx.xxx
2012-04-01 11:26 4762严重: Error configuring applicati ... -
Java复制、移动、删除、获取大小文件
2012-03-31 11:12 1799利用Apache Commons IO工具包(commons- ... -
Java中的Enum简单例子
2012-03-31 11:12 1326package com.util.enumclass; /* ... -
Java中的Enum的使用与分析
2012-03-30 11:28 938示例: package com.util.enumclass ... -
分享文件一个上传工具类
2012-03-30 10:57 960最近在搭建一个项目,需要用到很多通用的工具类,自己也写了几个。 ... -
Java创建、重命名、删除文件和文件夹
2012-03-30 10:52 1641package test.file; import java ... -
Java操作文件工具类
2012-03-30 10:48 1083JAVA API关于操作文件基础类太少,而且缺乏很多使 ... -
java获得实例对象的几种方法
2012-03-29 17:49 1027// 1.new Dog d1 = new Dog ... -
【异常】net.sf.hibernate.NonUniqueObjectException
2012-03-22 16:06 859net.sf.hibernate.NonUniqueObjec ... -
Java虚拟机原理
2012-03-22 15:47 823一、什么是Java虚拟机 ... -
【异常】org.springframework.orm.hibernate3.HibernateQueryException
2012-03-20 10:44 2994今天新同事遇到一个异常,通过如下方法做一个单元测试: /** ... -
【异常】javax.imageio.IIOException: Can't get input stream from URL!
2012-03-19 11:42 9652Exception in thread "main& ... -
Error reading tld listeners java.lang.NullPointerException
2012-03-16 17:40 1561在学习【FreeMarker整合Spring 3.0】时把相应 ... -
Java中hashmap和hashtable的区别
2012-03-01 16:18 7971、 继承和实现区别 Hashtable是基于陈旧的D ...
相关推荐
Java 实现创建缩略图和伸缩图片比例生成的方法,主要涉及到图像处理技术,特别是针对Java平台的图像操作。在Java中,我们可以使用内置的`java.awt.image`包中的类来处理图片,如`BufferedImage`和`Image`。下面我们...
61.js仿淘宝网鼠标经过缩略图放大图片效果的jQuery Fancy Hover Effect完整实例 62.Supersized jQuery全屏相册图片自动切换插件 63.[荐]jquery仿flash漂亮横向图片滚动效果完整版(兼容性非常好) 64.[荐]...
四五、支持订单缩略图显示,增加热门搜索,显示用户最关注的搜索信息。 四六、支持数据库在线备份、在线恢复、数据库大小查看,数据下载等! 四七、支持图片水印与文字水印功能,并可设置文字嵌入的5个方位等...
四五、支持订单缩略图显示,增加热门搜索,显示用户最关注的搜索信息。 四六、支持数据库在线备份、在线恢复、数据库大小查看,数据下载等! 四七、支持图片水印与文字水印功能,并可设置文字嵌入的5个方位等...
四四、支持订单缩略图显示,增加热门搜索,显示用户最关注的搜索信息。 四五、支持数据库在线备份、在线恢复、数据库大小查看,数据下载等! 四六、支持图片水印与文字水印功能,并可设置文字嵌入的5个方位等...
网新企业网站管理系统是专业为个人和企业网站建设而开发的一款智能化程序。该程序基于ASP+ACCESS环境开发,拥有完善的网站前台和后台全智能化管理...2.修复产品缩略图自动缩放功能,图片按比例缩放,解决图片变形问题
二四、增加缩略图弹出显示功能 强大的商品管理无疑给管理者提供了便利,新增的弹出图片显示功能,只需将鼠标移到商品上,即可弹出此商品的图片,非常方便,同时前台报价中心也增加了鼠标指向后显示图片的功能,提供...
2. 图像预览:展示已上传或检索到的图片,可能支持缩略图和全尺寸查看。 3. 操作按钮:如删除、下载、编辑图像等。 4. 搜索功能:根据关键词或元数据搜索图片。 5. 用户身份验证和权限管理:确保只有登录用户才能...
网新企业网站管理系统(绿色)是专业为个人和企业网站建设而开发的一款智能化程序。该程序基于ASP+ACCESS环境开发,拥有完善的网站前台和后台全智能...2.修复产品缩略图自动缩放功能,图片按比例缩放,解决图片变形问题。
红色网新中英文企业手机电脑建站系统是专业为个人和企业网站建设而开发的一款智能化程序。该程序基于ASP+ACCESS环境开发,拥有完善的网站前台和...2.修复产品缩略图自动缩放功能,图片按比例缩放,解决图片变形问题。
网新企业网站管理系统(蓝色)是专业为个人和企业网站建设而开发的一款智能化程序。蓝色网新企业网站管理系统基于ASP+ACCESS环境开发,拥有完善的...2.修复产品缩略图自动缩放功能,图片按比例缩放,解决图片变形问题。
红色网新中英文企业手机电脑建站系统是专业为个人和企业网站建设而开发的一款智能化程序。该程序基于ASP+ACCESS环境开发,拥有完善的网站前台和...2.修复产品缩略图自动缩放功能,图片按比例缩放,解决图片变形问题。