`
rensanning
  • 浏览: 3553595 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38248
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607659
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682884
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89603
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:402168
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69774
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91868
社区版块
存档分类
最新评论

Java分割拼接图片

    博客分类:
  • Java
 
阅读更多
分割图片
private static void splitImage() throws IOException {
	
	String originalImg = "C:\\img\\split\\a380_1280x1024.jpg";

	// 读入大图
	File file = new File(originalImg);
	FileInputStream fis = new FileInputStream(file);
	BufferedImage image = ImageIO.read(fis);

	// 分割成4*4(16)个小图
	int rows = 4;
	int cols = 4;
	int chunks = rows * cols;

	// 计算每个小图的宽度和高度
	int chunkWidth = image.getWidth() / cols;
	int chunkHeight = image.getHeight() / rows;

	int count = 0;
	BufferedImage imgs[] = new BufferedImage[chunks];
	for (int x = 0; x < rows; x++) {
		for (int y = 0; y < cols; y++) {
			//设置小图的大小和类型
			imgs[count] = new BufferedImage(chunkWidth, chunkHeight, image.getType());

			//写入图像内容
			Graphics2D gr = imgs[count++].createGraphics();
			gr.drawImage(image, 0, 0, 
					chunkWidth, chunkHeight, 
					chunkWidth* y, chunkHeight * x, 
					chunkWidth * y + chunkWidth,
					chunkHeight * x + chunkHeight, null);
			gr.dispose();
		}
	}

	// 输出小图
	for (int i = 0; i < imgs.length; i++) {
		ImageIO.write(imgs[i], "jpg", new File("C:\\img\\split\\img" + i + ".jpg"));
	}
	
	System.out.println("完成分割!");
}




拼接图片
private static void mergeImage() throws IOException {

	int rows = 2;
	int cols = 2;
	int chunks = rows * cols;

	int chunkWidth, chunkHeight;
	int type;

	//读入小图
	File[] imgFiles = new File[chunks];
	for (int i = 0; i < chunks; i++) {
		imgFiles[i] = new File("C:\\img\\merge\\img" + i + ".jpg");
	}

	//创建BufferedImage
	BufferedImage[] buffImages = new BufferedImage[chunks];
	for (int i = 0; i < chunks; i++) {
		buffImages[i] = ImageIO.read(imgFiles[i]);
	}
	type = buffImages[0].getType();
	chunkWidth = buffImages[0].getWidth();
	chunkHeight = buffImages[0].getHeight();

	//设置拼接后图的大小和类型
	BufferedImage finalImg = new BufferedImage(chunkWidth * cols, chunkHeight * rows, type);

	//写入图像内容
	int num = 0;
	for (int i = 0; i < rows; i++) {
		for (int j = 0; j < cols; j++) {
			finalImg.createGraphics().drawImage(buffImages[num], chunkWidth * j, chunkHeight * i, null);
			num++;
		}
	}

	//输出拼接后的图像
	ImageIO.write(finalImg, "jpeg", new File("C:\\img\\merge\\finalImg.jpg"));

	System.out.println("完成拼接!");
}


  • 大小: 41.1 KB
  • 大小: 32.9 KB
  • 大小: 15 KB
分享到:
评论
2 楼 州孓123 2015-08-25  
大神我拼的图,图片品质不是优啊,图片有些失贞,和用ps拼的图有些差距。请问怎么才能拼出正常的图啊。谢谢啦
1 楼 coolhappiness_rgb 2013-12-20  
非常好,简单好用,有图有code!

相关推荐

    浅析Java中String与StringBuffer拼接的区别

    在Java编程语言中,String和StringBuffer类都用于处理字符串,但它们在处理字符串拼接时有着显著的区别。本文将详细解析这两个类在拼接字符串时的行为差异。 首先,我们来了解一下String类。String对象在Java中是不...

    Java实现多个wav文件合成一个的方法示例

    Java实现多个wav文件合成一个的方法示例 本文介绍了Java实现多个wav文件合成一个的方法,涉及java文件流读写、编码转换、解析等相关操作技巧。 知识点1:Java中的文件流读写 在Java中,文件流读写是通过使用`...

    14-Java操作Linux命令分割合并文本文件1

    标题中的“14-Java操作Linux命令分割合并文本文件1”指的是使用Java编程语言来执行Linux命令,以实现对文本文件的分割和合并操作。在处理大文件时,由于内存限制,不能一次性将整个文件读入,因此需要采用分块处理的...

    Java文件分割程序源代码.rar

    5. **与CofeCut兼容**:这可能意味着源代码实现了特定的文件标记或头信息,使得CofeCut或其他兼容软件能够识别并正确拼接这些分割的文件。 6. **错误处理**:在处理过程中,必须考虑到可能出现的异常,如磁盘空间...

    开发sql语句拼接自动格式化工具

    例如,它可能会将一个连续的长SQL语句分割成多行,每一行包含一个逻辑单元,使阅读者能更容易理解其结构。 其次,语法高亮显示是另一个增强代码可读性的关键特性。通过不同的颜色和样式突出显示SQL语句的关键部分,...

    Android下利用Bitmap切割图片

    当我们需要对图片进行裁剪、缩放或进行其他操作时,Bitmap提供了丰富的功能。本篇文章将详细探讨如何在Android环境下利用Bitmap来切割图片。 首先,我们需要理解Bitmap对象的基本概念。Bitmap是一个像素数据的容器...

    Java版拼图游戏完整源码+素材

    拼图游戏的核心算法涉及到图像分割、随机排列以及拼接验证。首先,原始图像会被分割成若干个部分,然后这些部分在游戏界面上以随机顺序显示。玩家的任务是通过拖动这些部分来恢复原始图像。游戏的胜利条件是所有...

    文件分割合并程序

    用户可以设定以“.pp”为扩展名的文件进行合并,确保所有部分正确无误地拼接在一起。此外,程序还包含“流行皮肤JAR包”,这表明它具有用户界面定制功能,允许用户选择不同的视觉样式,提升了用户体验。 “程序源码...

    拼图游戏 java 实例

    2. **游戏逻辑**:定义拼图的状态,如初始状态(图片已分割并随机排列)、进行中状态(用户正在移动图片块)和完成状态(所有图片块都位于正确位置)。 3. **布局管理**:使用布局管理器(如FlowLayout或GridLayout...

    文件分割上传

    综上所述,"文件分割上传"技术在Java Web环境中,通过结合JavaScript、Servlet、JSP等技术,可以实现高效、稳定的大文件上传解决方案,提高用户体验并降低服务器压力。同时,利用像plupload这样的第三方库,可以简化...

    java 字符串的拼接的实现实例

    Java 字符串拼接的实现实例 Java 字符串拼接是 Java 编程语言中一个非常重要的概念,它是指将多个字符串合并成一个字符串的过程。在实际开发中,字符串拼接是最常见的编程任务。下面将详细介绍 Java 字符串拼接的...

    java spire.pdf 使用 对 pdf文件的相关操作

    自己写的 spire.pdf 简单的demo ,有一些基础的使用方法,对刚接触的小伙伴...分割pdf ,包括按总页数,每页分割为一个 pdf文件,由于免费版原因,可以每9页生成一个pdf,或者根据 指定页数 (页) 根据指定页数 分割pdf

    使用java程序编写的拼图游戏

    所谓拼图游戏,是指将一个完整的图片分割成若干个规则的小图片,然后将这些小图片随机地拼在一起,然后由玩家按照原图重新拼接出正确的图片。 三、设计思路 通过单击与空白网格相邻的网格,可以将该网格显示的图片...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    例如,如果用户选择的标签以逗号分隔的字符串"tag1,tag2,tag3"传入,我们可以在Java代码中将其分割并存入List。 接下来,我们将焦点转到Mapper.xml文件。在SQL语句中,我们可以使用`&lt;foreach&gt;`标签来遍历集合中的...

    OJ_将数组中的字符串按指定长度重新分割

    4. **字符串拼接**:如果一个字符串不能被均匀地分割成指定长度的子字符串,那么可能需要进行额外的处理,比如在末尾添加剩余的字符。这会涉及到字符串的连接操作,可以使用`+`运算符或`StringBuilder`类来完成。 5...

    java开发手册 api文档(jdk1.8中文)

    `String`类提供了丰富的字符串操作方法,如拼接、查找、替换、分割等。`Integer`类则是整型数值的包装类,提供了与数值相关的转换和比较功能。 集合框架是Java编程中的重要组成部分,`java.util`包下的`List`、`Set...

    MP3文件分割、合并编辑软件

    合并MP3文件则是将两个或多个MP3文件拼接在一起形成一个新的文件。这对于创建播放列表或制作混音非常有用。软件通常会提供拖放界面,使用户能轻松地排列和组合MP3文件的顺序。在合并过程中,软件会确保音质不受损,...

    Java 语言基础例子代码.rar

    例子可能涵盖创建字符串、拼接、比较、查找子串、替换字符、分割字符串等。通过实践,初学者能学会如何高效地操作和处理文本数据。 此外,文件操作是Java编程中不可或缺的一部分。虽然标签中提到"文件操作",但...

    Java的拼图游戏

    2. 图片分割:将原始图片切割成多个小块,这通常涉及到图像处理算法。 3. 随机化布局:打乱拼图块的初始位置,增加游戏难度。 4. 拼接检测:当玩家尝试移动拼图块时,需要检测相邻块是否能正确拼接,这可能通过比较...

    国二java考试系统

    3. **字符串处理**:String类是Java中处理字符串的常用工具,考生需要了解其基本操作,如拼接、查找、替换、分割等。 4. **文件操作**:在Java中,可以使用File类和相关的IO流来读写文件,考生需学会创建、读取、...

Global site tag (gtag.js) - Google Analytics