- 浏览: 125267 次
- 性别:
- 来自: 佛山
文章分类
最新评论
-
jackyrong:
hi,你好,能否发一份代码到我邮箱?谢谢了,jackyrong ...
基于struts2+spring+hibernate+jquery的jmesa分页实现样例 -
qdongl:
不错,继续学习
Java 通用数据库连接类[支持存储过程 参数自动识别] -
ww_o_ww:
学习了··哈哈·· ··
JAVA EXCEL API 使用 -
Angel_Night:
@TestExecutionListeners( { Tran ...
使用 Spring 2.5 TestContext 测试框架 -
ray111:
缺少DBConnectionManager类?
Java 通用数据库连接类[支持存储过程 参数自动识别]
方法1:[第一种方法比后一种生成的缩略图要清晰]
方法2:
import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; import java.awt.*; import java.awt.geom.AffineTransform; import java.io.InputStream; import java.io.File; import java.io.FileOutputStream; public class Test { public static BufferedImage resize(BufferedImage source, int targetW, int targetH) { // targetW,targetH分别表示目标长和宽 int type = source.getType(); BufferedImage target = null; double sx = (double) targetW / source.getWidth(); double sy = (double) targetH / source.getHeight(); //这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放 //则将下面的if else语句注释即可 if(sx>sy) { sx = sy; targetW = (int)(sx * source.getWidth()); }else{ sy = sx; targetH = (int)(sy * source.getHeight()); } if (type == BufferedImage.TYPE_CUSTOM) { //handmade ColorModel cm = source.getColorModel(); WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH); boolean alphaPremultiplied = cm.isAlphaPremultiplied(); target = new BufferedImage(cm, raster, alphaPremultiplied, null); } else target = new BufferedImage(targetW, targetH, type); Graphics2D g = target.createGraphics(); //smoother than exlax: g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY ); g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy)); g.dispose(); return target; } public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight) throws Exception { BufferedImage srcImage; // String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length()); String imgType = "JPEG"; if (fromFileStr.toLowerCase().endsWith(".png")) { imgType = "PNG"; } // System.out.println(ex); File saveFile=new File(saveToFileStr); File fromFile=new File(fromFileStr); srcImage = ImageIO.read(fromFile); if(width > 0 || hight > 0) { srcImage = resize(srcImage, width, hight); } ImageIO.write(srcImage, imgType, saveFile); } public static void main (String argv[]) { try{ //参数1(from),参数2(to),参数3(宽),参数4(高) Test.saveImageAsJpg("E:/Document/My Pictures/3.gif","c:/6.gif",50,50); } catch(Exception e) { e.printStackTrace(); } } }
方法2:
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 Tes { String InputDir; //输入图路径 String OutputDir; //输出图路径 String InputFileName; //输入图文件名 String OutputFileName; //输出图文件名 int OutputWidth = 80; //默认输出图片宽 int OutputHeight = 80; //默认输出图片高 int rate = 0; boolean proportion = true; //是否等比缩放标记(默认为等比缩放) public Tes() { //初始化变量 InputDir = ""; OutputDir = ""; InputFileName = ""; OutputFileName = ""; OutputWidth = 80; OutputHeight = 80; rate = 0; } 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 String 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 "no"; } 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 "ok"; } public String 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 String 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 static void main(String[] a) { //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度) Tes mypic = new Tes(); System.out.println( mypic.s_pic("E:\Document\My Pictures\", "E:\Document\My Pictures\", "topbg-3.gif", "3.gif", 400, 400, true) ); } }
发表评论
-
创建EXCEL文件
2008-08-20 11:30 1873创建EXCEL文件: public void createX ... -
JAVA EXCEL API 使用
2008-08-20 11:21 2953JAVA EXCEL API简介 Java Excel是 ... -
synchronized的作用(四)
2008-05-06 22:34 1018注意: 1、用synchronized 来 ... -
synchronized的作用(三)
2008-05-06 22:32 980b、锁定一个对象或方法,它是静态的 这样锁定,它锁定的是对象所 ... -
synchronized的作用(二)
2008-05-06 22:27 1082引申: 对于这种多个实 ... -
synchronized的作用(一)
2008-05-06 22:20 1129synchronized的作用 一、同步方法 public ... -
解析Java对象的equals()和hashCode()的使用
2008-05-06 20:39 1615前言 在Java语言中,equals()和hashCod ... -
java字符串编码类型获取
2008-04-27 23:03 6273汉字编码是一项较为麻烦的事情,弄不好就会造出些谁都看不懂的乱码 ... -
常用Java开源库
2008-04-24 12:48 1076Jakarta common: Commons Loggin ... -
Request的参数转换
2008-04-22 18:19 1944import java.io.UnsupportedEncod ... -
MD5加密算法
2008-04-22 16:52 854/** Title:MD5加密算法,用来加密用户密码。 * ... -
一段截屏的代码
2008-04-22 16:46 984import java.awt.Dimension; i ... -
java中文件操作大全
2008-04-22 16:44 1300一.获得控制台用户输入的信息 文本查看复制到剪贴板打印? / ... -
用Java实现断点续传(HTTP)
2008-04-22 16:37 1331(一)断点续传的原理 其实断点续传的原理很简单,就是在Http ... -
Java实现给图片添加水印
2008-04-22 16:34 1122import java.awt.*; import ja ... -
始终会用上的Common BeanUtils
2008-04-22 16:04 967Beanutils用了魔术般的反 ... -
使用JAVA加jxl.jar操作EXECL
2008-04-22 15:59 2791//程序说明: 要导入jxl.jar到Classpath中 ... -
JAVA编程技巧之如何实现HTTP的断点续传
2008-04-22 15:57 940(一)断点续传的原理 其实断点续传的原理很简单,就是在Htt ... -
内部类
2008-04-22 15:56 1046本文主要参照网上的一些相关文章、以及thinking in j ... -
java读取配置文件的几种方法
2008-04-22 15:52 968在现实工作中,我们常常需要保存一些系统配置信息,大家一 ...
相关推荐
java生成缩略图
java 生成缩略图类 源代码 (已经封装好)
java图片裁剪和java生成缩略图.pdf
java 上传图片时生成对应的缩略图,缩略图的大小可手动更改,代码中有详细注释
java程序开发中,将图片以缩略图形式展示,不错的资料,欢迎下载,共同学习
主要介绍了java生成缩略图的方法,结合具体实例形式分析了java生成缩略图过程中所涉及的各种常见的图形处理技巧,需要的朋友可以参考下
NULL 博文链接:https://anlinko.iteye.com/blog/725639
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
java 生成缩略图 java 生成缩略图 java 生成缩略图java 生成缩略图java 生成缩略图
使用 phantomjs 和 im4java 生成网页缩略图,切图用的是ImageMagick,附送im4java调用ImageMagick处理图片代码,包括剪切、调整大小、调整到指定比例大小不足部分补白边。包含 phantomjs 包,不包含ImageMagick。
java源代码
/** * 压缩图片方法 * * @param oldFile 将要压缩的图片 * @param width 压缩宽 * @param height 压缩高 * @param quality 压缩清晰度 建议为1.0 * @param smallIcon 压缩图片后,添加的扩展名(在图片后缀名...
。
。
刚改的程序,很好使的。
网上找的缩略图生成方法都不够清晰,于是决定自己研究和改进生成缩略图方法。此方法压缩后的图片小,清晰度高,压缩速度快。5000张图片大概抽根烟的功夫就压缩完了。高清的哦。各种参数都是可配的,方便移植到自己...
这个小项目主要是利用java Thumbnaillator类库实现对图片的缩放功能,代码参考自慕课网Java实现图片等比例缩略图教学视频,目的为需求源码的小伙伴提供一个参考,如有问题大家再一起交流(附:资源积分是必选项,...
NULL 博文链接:https://wenkaixuan.iteye.com/blog/785823
java视频生成图片(缩略图)-实例-(指定时间)
java大图生成缩略图。。。。。。。。。。。。