- 浏览: 128129 次
- 性别:
- 来自: 佛山
文章分类
最新评论
-
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 1913创建EXCEL文件: public void createX ... -
JAVA EXCEL API 使用
2008-08-20 11:21 2999JAVA EXCEL API简介 Java Excel是 ... -
synchronized的作用(四)
2008-05-06 22:34 1051注意: 1、用synchronized 来 ... -
synchronized的作用(三)
2008-05-06 22:32 1014b、锁定一个对象或方法,它是静态的 这样锁定,它锁定的是对象所 ... -
synchronized的作用(二)
2008-05-06 22:27 1119引申: 对于这种多个实 ... -
synchronized的作用(一)
2008-05-06 22:20 1161synchronized的作用 一、同步方法 public ... -
解析Java对象的equals()和hashCode()的使用
2008-05-06 20:39 1647前言 在Java语言中,equals()和hashCod ... -
java字符串编码类型获取
2008-04-27 23:03 6311汉字编码是一项较为麻烦的事情,弄不好就会造出些谁都看不懂的乱码 ... -
常用Java开源库
2008-04-24 12:48 1114Jakarta common: Commons Loggin ... -
Request的参数转换
2008-04-22 18:19 1991import java.io.UnsupportedEncod ... -
MD5加密算法
2008-04-22 16:52 910/** Title:MD5加密算法,用来加密用户密码。 * ... -
一段截屏的代码
2008-04-22 16:46 1014import java.awt.Dimension; i ... -
java中文件操作大全
2008-04-22 16:44 1338一.获得控制台用户输入的信息 文本查看复制到剪贴板打印? / ... -
用Java实现断点续传(HTTP)
2008-04-22 16:37 1382(一)断点续传的原理 其实断点续传的原理很简单,就是在Http ... -
Java实现给图片添加水印
2008-04-22 16:34 1160import java.awt.*; import ja ... -
始终会用上的Common BeanUtils
2008-04-22 16:04 1008Beanutils用了魔术般的反 ... -
使用JAVA加jxl.jar操作EXECL
2008-04-22 15:59 2935//程序说明: 要导入jxl.jar到Classpath中 ... -
JAVA编程技巧之如何实现HTTP的断点续传
2008-04-22 15:57 980(一)断点续传的原理 其实断点续传的原理很简单,就是在Htt ... -
内部类
2008-04-22 15:56 1085本文主要参照网上的一些相关文章、以及thinking in j ... -
java读取配置文件的几种方法
2008-04-22 15:52 1007在现实工作中,我们常常需要保存一些系统配置信息,大家一 ...
相关推荐
在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 Java 中,生成缩略图可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用BufferedImage类 使用BufferedImage类可以实现图片的缩略图...
根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...
java 生成缩略图类 源代码 (已经封装好)
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
java图片裁剪和java生成缩略图.pdf
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...
Java 生成缩略图的方法示例 Java 生成缩略图是指使用 Java 语言生成缩略图的过程,这个过程中涉及到各种图形处理技巧。下面将详细介绍 Java 生成缩略图的方法示例。 图像处理基础 在 Java 中,图像处理是通过使用...
在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
在Java中生成缩略图是一项常见的任务,尤其是在开发Web应用或者需要处理用户上传图片的系统中。这个过程涉及对原始图像进行重新尺寸调整,以创建一个较小的版本,通常用于预览或节省存储空间。在提供的代码片段中,...
java 生成缩略图 java 生成缩略图 java 生成缩略图java 生成缩略图java 生成缩略图
使用 phantomjs 和 im4java 生成网页缩略图,切图用的是ImageMagick,附送im4java调用ImageMagick处理图片代码,包括剪切、调整大小、调整到指定比例大小不足部分补白边。包含 phantomjs 包,不包含ImageMagick。
在这个特定的场景中,"JSP上传图片并生成缩略图"是一个常见的功能需求,尤其是在开发包含用户交互和多媒体内容的Web应用时。下面我们将详细探讨这一技术实现的关键知识点。 首先,**上传组件**是Web应用中用于接收...
在Java编程中,生成缩略图是一项常见的任务,特别是在开发Web应用或处理用户上传的图像时。这个过程涉及读取原始图像,调整其尺寸,并保存为新的格式,以适应特定的展示需求。以下是一个关于如何在Java中创建缩略图...
6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...
生成缩略图通常可以借助于图像处理库,如Java的`javax.imageio.ImageIO`或第三方库如Apache Commons Imaging。以下是一个简单的示例: ```java try { BufferedImage originalImage = ImageIO.read(file....
在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...
/** * 压缩图片方法 * * @param oldFile 将要压缩的图片 * @param width 压缩宽 * @param height 压缩高 * @param quality 压缩清晰度 建议为1.0 * @param smallIcon 压缩图片后,添加的扩展名(在图片后缀名...
5. **生成缩略图**:利用Java API或其他第三方库(如Thumbnails)来生成图片的缩略版本。 6. **将图片数据存储到数据库**:将处理后的图片数据(包括原图和缩略图)存储到数据库中。 #### 二、代码详解与知识点分析...
在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...