- 浏览: 444588 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (144)
- javase (15)
- javaee (10)
- Struts (6)
- hibernate (10)
- spring (1)
- struts2 (9)
- html+javascript+css (13)
- i love jquery (5)
- AJAX (6)
- 数据库 (8)
- java与XML (5)
- JavaWeb (13)
- ant+xdoclet (1)
- JBPM (2)
- Apache POI (1)
- jfreechart (7)
- ZK (1)
- MyEclipse (1)
- 其它 (5)
- Lucene (3)
- JasperReport (8)
- Linux (1)
- Google+ G+ (0)
- Google+ G+ (0)
- Google+ (0)
- G+ (0)
- 爱折腾 (0)
- Twitter (0)
- youtube (0)
- facebook (0)
- Android hosts文件 换行 window unix (1)
- Objective-c (1)
最新评论
-
云端月影:
mark
UIView总结 -
yuji0228:
[i][i][i][i][i][i][i][i][i][i][ ...
JasperReport学习笔记2-创建简单的报表例子 -
hhb19900618:
你好 运行报错java.net.BindException: ...
Java服务器程序 -
tan8888:
即使是定义了compareTo ,treeSet还是会出现相同 ...
HashSet与TreeSet -
chinalian:
谢谢,总结的很清晰。
Jquery模仿Google Suggest基于js的动态下拉菜单
package com.langhua.cutFile; import java.io.*; import java.awt.*; import java.awt.image.*; import java.awt.Graphics; import java.awt.color.ColorSpace; import javax.imageio.ImageIO; import com.langhua.ImageUtils.ImageUtils; public class ChangeImageSize { /** *//** * 缩放图像 * @param srcImageFile 源图像文件地址 * @param result 缩放后的图像地址 * @param scale 缩放比例 * @param flag 缩放选择:true 放大; false 缩小; */ public static void scale(String srcImageFile, String result, int scale, boolean flag) { try { BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件 int width = src.getWidth(); // 得到源图宽 int height = src.getHeight(); // 得到源图长 if (flag) { // 放大 width = width * scale; height = height * scale; } else { // 缩小 width = width / scale; height = height / scale; } Image image = src.getScaledInstance(width, height, Image.SCALE_DEFAULT); BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = tag.getGraphics(); g.drawImage(image, 0, 0, null); // 绘制缩小后的图 g.dispose(); ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流 } catch (IOException e) { e.printStackTrace(); } } /** * 图像切割 * @param srcImageFile 源图像地址 * @param descDir 切片目标文件夹 * @param destWidth 目标切片宽度 * @param destHeight 目标切片高度 */ public static void cut(String srcImageFile, String descDir, int destWidth, int destHeight) { try { Image img; ImageFilter cropFilter; String dir = null; // 读取源图像 BufferedImage bi = ImageIO.read(new File(srcImageFile)); int srcWidth = bi.getHeight(); // 源图宽度 int srcHeight = bi.getWidth(); // 源图高度 System.out.println("srcWidth:"+srcWidth); System.out.println("srcHeight:"+srcHeight); if (srcWidth > destWidth && srcHeight > destHeight) { Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT); destWidth = 300; // 切片宽度 destHeight = 300; // 切片高度 int cols = 0; // 切片横向数量 int rows = 0; // 切片纵向数量 // 计算切片的横向和纵向数量 if (srcWidth % destWidth == 0) { cols = srcWidth / destWidth; } else { cols = (int) Math.floor(srcWidth / destWidth) + 1; } if (srcHeight % destHeight == 0) { rows = srcHeight / destHeight; } else { rows = (int) Math.floor(srcHeight / destHeight) + 1; } // 循环建立切片 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { // 四个参数分别为图像起点坐标和宽高 // 即: CropImageFilter(int x,int y,int width,int height) cropFilter = new CropImageFilter(j * 300, i * 300, destWidth, destHeight); img = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter)); BufferedImage tag = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB); Graphics g = tag.getGraphics(); g.drawImage(img, 0, 0, null); // 绘制缩小后的图 g.dispose(); // 输出为文件 dir = descDir + "cut_image_" + i + "_" + j + ".jpg"; File f = new File(dir); ImageIO.write(tag, "JPEG",f); System.out.println(dir); ImageUtils.pressText("水印",dir,"宋体",1,1,25,10,10); } } } } catch (Exception e) { e.printStackTrace(); } } /** * 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X) */ public static void convert(String source, String result) { try { File f = new File(source); f.canRead(); f.canWrite(); BufferedImage src = ImageIO.read(f); ImageIO.write(src, "JPG", new File(result)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 彩色转为黑白 * @param source * @param result */ public static void gray(String source, String result) { try { BufferedImage src = ImageIO.read(new File(source)); ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); ColorConvertOp op = new ColorConvertOp(cs, null); src = op.filter(src, null); ImageIO.write(src, "JPEG", new File(result)); } catch (IOException e) { e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { //scale("c:\\test\\456.jpg","C:\\test\\image1.jpg",2,false); //cut("c:\\1.jpg","C:\\2.jpg",64,64); //gray("c:\\test\\456.jpg","C:\\test\\image4.jpg"); } }
优化后的图像分割
package com.langhua.cutFile; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import com.langhua.ImageUtils.ImageUtils; public class CutImage { // 源图片路径名称如:c:\1.jpg private String srcpath; // 剪切图片存放路径名称.如:c:\2.jpg private String subpath; // 剪切点x坐标 private int x; private int y; // 剪切点宽度 private int width; private int height; public CutImage() { } public CutImage(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } /** * 对图片裁剪,并把裁剪完蛋新图片保存 。 */ public void cut() throws IOException { FileInputStream is = null; ImageInputStream iis = null; try { // 读取图片文件 is = new FileInputStream(srcpath); /** * 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader 声称能够解码指定格式。 * 参数:formatName - 包含非正式格式名称 . (例如 "jpeg" 或 "tiff")等 。 */ Iterator<ImageReader> it = ImageIO .getImageReadersByFormatName("jpg"); ImageReader reader = it.next(); // 获取图片流 iis = ImageIO.createImageInputStream(is); /** * iis:读取源.true:只向前搜索.将它标记为 ‘只向前搜索’。 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 * reader 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。 */ reader.setInput(iis, true); /** * <p> * 描述如何对流进行解码的类 * <p> * .用于指定如何在输入时从 Java Image I/O 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件 将从其 * ImageReader 实现的 getDefaultReadParam 方法中返回 ImageReadParam 的实例。 */ ImageReadParam param = reader.getDefaultReadParam(); /** * 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象 * 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。 */ Rectangle rect = new Rectangle(x, y, width, height); // 提供一个 BufferedImage,将其用作解码像素数据的目标。 param.setSourceRegion(rect); /** * 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将 它作为一个完整的 * BufferedImage 返回。 */ BufferedImage bi = reader.read(0, param); // 保存新图片 ImageIO.write(bi, "jpg", new File(subpath)); } finally { if (is != null) is.close(); if (iis != null) iis.close(); } } /** * 图像切割 * * @param srcImageFile * 源图像地址 * @param descDir * 切片目标文件夹 * @param destWidth * 目标切片宽度 * @param destHeight * 目标切片高度 返回一个List,保存九张图片的图片名 */ public static java.util.List<String> cutImg(String srcImageFile, String descDir, int destWidth, int destHeight) { java.util.List<String> list = new java.util.ArrayList<String>(9); try { String dir = null; // 读取源图像 BufferedImage bi = ImageIO.read(new File(srcImageFile)); int srcWidth = bi.getHeight(); // 源图宽度 int srcHeight = bi.getWidth(); // 源图高度 if (srcWidth > destWidth && srcHeight > destHeight) { destWidth = 300; // 切片宽度 destHeight = 300; // 切片高度 int cols = 0; // 切片横向数量 int rows = 0; // 切片纵向数量 // 计算切片的横向和纵向数量 if (srcWidth % destWidth == 0) { cols = srcWidth / destWidth; } else { cols = (int) Math.floor(srcWidth / destWidth) + 1; } if (srcHeight % destHeight == 0) { rows = srcHeight / destHeight; } else { rows = (int) Math.floor(srcHeight / destHeight) + 1; } // 循环建立切片 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { CutImage cutImage = new CutImage(j * 300, i * 300, 300, 300); cutImage.setSrcpath(srcImageFile); dir = descDir + "cut_image_" + i + "_" + j + ".jpg"; cutImage.setSubpath(dir); cutImage.cut(); list.add("cut_image_" + i + "_" + j + ".jpg"); ImageUtils.pressText("水印", dir, "宋体", 1, 1, 25, 10, 10); } } } } catch (Exception e) { e.printStackTrace(); } return list; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public String getSrcpath() { return srcpath; } public void setSrcpath(String srcpath) { this.srcpath = srcpath; } public String getSubpath() { return subpath; } public void setSubpath(String subpath) { this.subpath = subpath; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }
发表评论
-
jstl中的varStatus
2009-04-21 14:58 1066jstl中的varStatus 和 var 属性一样, va ... -
java日期的用法
2009-02-21 01:24 1422public class DateTest { p ... -
java.util.Scanner的总结
2009-02-14 18:02 11020java.util.Scanner的总结 //构造方法( ... -
JDBC笔记
2009-02-13 01:21 1623JDBC Java Database Co ... -
Java正则表达式
2009-02-12 02:57 1808public class RegularTest { ... -
JAVA反射
2009-02-11 23:45 971http://dev.csdn.net/article/49/ ... -
程序运行时数据保存到什么地方和JAVA类中主成员的默认值
2009-01-04 10:37 1656程序运行时数据保存到 ... -
用Spring做的定时器
2008-12-05 20:00 1206<bean id="sayHelloTas ... -
javascript传中文参数乱码
2008-12-03 19:53 2348String shopname = aykjShopForm. ...
相关推荐
java 水印 图像处理 图片分割 裁剪 缩放 功能 且带整个程序的整合, 和单元测试对单独功能的处理 操作,并可以通过打印 发送传真,全部
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
通过图形技术,实现图片的导入和分割。通过消息响应机制,使程序可以响应用户的鼠标操作,进行拼图游戏的操作。 调试:本实例代码编写完毕,存盘为:C: j2sdk1.4.0\javaprograms\ pintu.java。 打开计算机的...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
12反射 是java程序开发的特征之一,允许java程序对自身进行检查,并能直接操作程序的内部属性; instanceof操作符,instanceof.java; 获取类的信息,ViewClassInfoJrame.java; 动态调用类的方法,CallMetod.java; ...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...
本游戏可以在程序中直接将图片切割成相应等级块数。图片随机位置的产生不会出现拼图不成功的情况,在程序编写过程中已经将不能拼成功的情况去除了,同时还可以更换拼图图片,可以显示步骤数以及所用时间秒数。 注意...
案例4 利用Java API发送E-mail 案例5 从Mail Server删除一条消息 案例6 在Java程序中实现FTP的功能 案例7 一个最简单的聊天程序 案例8 代理服务器的实现 第十章 Java综合实例 案例1 用Java...
实例2 java流程控制 实例20 工具栏 实例21 内部窗体 实例22 分割一个面板 实例23 滑动杆 实例24 颜色过滤器 实例25 表格 实例26 基本图形绘制 实例27 绘制波图形 实例28 图片的处理 实例29 绘制指针时钟 实例3 数组...
实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见问题 找不到类文件 6 常见问题 语法错误 7 第2章 Java基础语法 9 实例4 变量和常量 9 实例5 基本数据类型转换 10 实例6 ...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...