java中如何切割图片_Java 切割图片代码
Java 切割图片代码
(2012-09-04 10:39:48)
标签:
宽度
切割
源文件
工具类
java
package com.lyis.commons.util;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import com.lyis.commons.dto.ImageDto;
public class CutImage {
public ImageDto cut(File sourceFile, String targetDir, int width,
int height)
throws Exception {
List list = new
ArrayList();
BufferedImage source = ImageIO.read(sourceFile);
int sWidth = source.getWidth(); // 图片宽度
int sHeight = source.getHeight(); // 图片高度
if (sWidth > width
&& sHeight > height)
{
int cols = 0; // 横向切片总数
int rows = 0; // 纵向切片总数
int eWidth = 0; // 末端切片宽度
int eHeight = 0; // 末端切片高度
if (sWidth % width == 0) {
cols = sWidth / width;
} else {
eWidth = sWidth % width;
cols = sWidth / width + 1;
}
if (sHeight % height == 0) {
rows = sHeight / height;
} else {
eHeight = sHeight % height;
rows = sHeight / height + 1;
}
String fileName = null;
File file = new File(targetDir);
if (!file.exists()) { // 存储目录不存在,则创建目录
file.mkdirs();
}
BufferedImage image = null;
int cWidth = 0; // 当前切片宽度
int cHeight = 0; // 当前切片高度
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cWidth = getWidth(j, cols, eWidth, width);
cHeight = getHeight(i, rows, eHeight, height);
// x坐标,y坐标,宽度,高度
image = source.getSubimage(j * width, i * height, cWidth,
cHeight);
fileName = targetDir + "/map_" +
i + "_" + j +
".jpg";
file = new File(fileName);
ImageIO.write(image, "JPEG",
file);
list.add(file);
}
}
}
return new ImageDto(sWidth, sHeight, list);
}
public ImageDto cut(String source, String targetDir, int width, int
height)
throws Exception {
return cut(new File(source), targetDir, width, height);
}
private int getWidth(int index, int cols, int endWidth, int width)
{
if (index == cols - 1) {
if (endWidth != 0) {
return endWidth;
}
}
return width;
}
private int getHeight(int index, int rows, int endHeight, int
height) {
if (index == rows - 1) {
if (endHeight != 0) {
return endHeight;
}
}
return height;
}
}
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。
java中如何切割图片_Java 切割图片代码相关推荐
- 解决java中使用getImage()导入图片失败问题
解决java中使用getImage()导入图片失败问题 在使用getImage(fileName)方法导入图片时,一直失败.后来加入相对路径解决找不到图片问题. 代码如下 image = Toolki ...
- java中怎么合成图片_Java 实现图片合成
图片合成 利用Java的绘图方法,实现图片合成 在开始之前,先定一个小目标,我们希望通过图片合成的方式,创建一个类似下面样式的图片 I. 设计思路 首先解析一下我们的目标实现图片合成,那么这些合成的基 ...
- java字符串 n换行符_java切割字符串中的回车应注意是\n\r不是\n
我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的. 如果想以回车来分隔字符串,很多同学都会这样做.下面是例子: Stri ...
- java中使用IO将文件切割后保存(FileInputStream、FileOutputStream)
直接代码: public class Demo {public static void main(String[] args) throws IOException {split(new File(& ...
- java中session的作用_java中session的工作原理是什么?和Cookies有何区别?
现在大家学习的东西和以前大不相同了,越来越多的人倾向于去学习高新技术以获得更好的发展.java是很多人的第一选择.java中的知识还是很多的,今天就来为大家介绍一下. 首先来说一下java中sessi ...
- JAVA中的适配器应用_Java适配器模式详解和实际应用.md
# 一.了解适配器模式 ## 1.什么是适配器模式 适配器模式将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容.这种模式的主要作用就是把原本不兼容的接口,通过适配修改做到统一. 这个模式可 ...
- java中的vm自变量_java中JVM虚拟机内存模型详细说明
java中JVM虚拟机内存模型详细说明 JVM的内部结构如下图: 一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求 ...
- java中equals的重写_Java重写equals方法(重点讲解)
为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往 ...
- java中引用类型有哪些_java中什么是引用类型
java中的引用类型是指除了基本数据类型之外的所有类型.java中有四种引用类型,分别是强引用.软引用.弱引用和虚引用.引用类型和原始类型具有不同的特征和用法. Java 提供两种不同的类型:引用类型 ...
- java中注解的使用_java中注解的使用
使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...
最新文章
- PHP学习笔记-PHP与JavaScript的交互
- 001——数组(一)数组知识及foreach函数应用
- Python是非常优美的语言,那到底如何个美呢?
- css3弹性盒子、媒体查询、多列布局
- python集合类型一般应用的场景包括_Python学习,数据类型,python,篇
- python之类的封装、多态、继承
- ng机器学习视频笔记(十三) ——异常检测与高斯密度估计
- 计算机基础(五):堆和栈区别
- xlua的hotfixManager
- linux模拟进程调度,Linux进程调度模拟3
- js高级学习笔记(b站尚硅谷)-8-关于语句分号的问题
- pandavan 固件squashfs只读文件系统如何上传应用程序
- 浪潮服务器销售案例ppt,浪潮服务器产品线介绍(ppt 105页)
- SuperMap iDesktop常见问题解答集锦(八)
- 地理工具 | EXCEL读取照片EXIF,并在地图上标注拍摄地点
- 福特汉姆大学计算机科学专业,福特汉姆大学计算机与信息科学系
- 概率论与数理统计--笔记
- linux who命令功能,Linux who命令详解
- Excel如何快速删除空白行?替换部分字符?
- 计算机病毒的自述,电脑的自述作文500字