Java图片分割与合并
一张图片有的时候太大了之后,我们需要把大图分割成若干张小图存入数据库,在读取的时候,需要把若干张小图合成一张大图
因此有了如下的代码,首先分割
private static void splitImage() throws IOException {//String originalImg = "C:\\img\\split\\a380_1280x1024.jpg";String originalImg = "D:\\img\\1f90ec47-06f2-4de2-bc68-946d8f93595d-5456FC54C74A297CE994998C2873B370";// 读入大图File file = new File(originalImg);FileInputStream fis = new FileInputStream(file);BufferedImage image = ImageIO.read(fis);// 分割成4*4(16)个小图int rows = 3;int cols = 3;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"));ImageIO.write(imgs[i], "jpg", new File("d:\\img\\img" + i + ".jpg"));}System.out.println("完成分割!");}
合并:
private static void mergeImage() throws IOException {int rows = 3;int cols = 3;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("d:\\img2\\img" + i + ".jpg");}//创建BufferedImageBufferedImage[] 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("d:\\img2\\finalImg.jpg"));InputStream is=(InputStream) ImageIO.createImageInputStream(finalImg);System.out.println("完成拼接!");}
public static InputStream mergeImage_1(String path,String name,String prefix) throws IOException {int rows = 3;int cols = 3;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(path+name +"_"+ i+"."+prefix);}//创建BufferedImageBufferedImage[] 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("d:\\img2\\finalImg.jpg"));//InputStream is=(InputStream) ImageIO.createImageInputStream(finalImg);finalImg.flush();ByteArrayOutputStream bs = new ByteArrayOutputStream();InputStream is=null;ImageOutputStream imOut;imOut = ImageIO.createImageOutputStream(bs);ImageIO.write(finalImg, prefix,imOut);is= new ByteArrayInputStream(bs.toByteArray());System.out.println("完成拼接!");return is;}
Java图片分割与合并相关推荐
- 干货来了,JAVA代码实现图片分割、合并工具类
几天前在CSDN问答上看到这个问题,想联系提问者,告诉他,我解决了,可是一直没有联系上, 于是决定把实现代码以文章的形式发出来. 思路: 将原图,竖向划分为10个等份,前两个等份作为1个参考图,后8份 ...
- java 图片分割_Java atlas图集分割
java版本的图集分割 atlasFilePath : 图集配置文件 imageFilePath :图集文件 outPath :输出文件夹 图片读取 图片裁剪 图片存储 StringUtil.pars ...
- java mp4分割_Java 合并多个MP4视频文件
局限性 只支持mp4文件 经过尝试对于一些mp4文件分割不了 依赖 com.googlecode.mp4parser isoparser 1.1.22 工具类 package com.example. ...
- thinkphp5 图片压缩旋转_【好工具】在线免费无限制的PDF处理工具(转换、编辑、分割、合并、压缩)...
在线好用的 PDF 编辑工具,PDF 转文档,PDF 压缩.编辑.分割不再难,解密 PDF 文档也在行,快来试试- 作者 & 编辑 | Leong SmallPDF SmallPDF http ...
- java io大文件_JavaIO流对大文件进行分割与合并
对于大文件传输不方便时候可以试一下分割之后再操作: package com.lym; import java.io.BufferedInputStream; import java.io.Buffer ...
- java 图片合并_Java如何实现图片的叠加与拼接操作
关于Java实现图片的叠加与拼接的文章网络上确实很多,碰巧小编开发工作中也遇到这些问题,就做了简要的梳理,作为笔记以备不时之需. Java对图片的处理主要使用的是BufferedImage类. Buf ...
- java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...
- Java 批量导出PPT为图片,并合并生成PDF
Java 批量导出PPT为图片,并合并生成PDF 最近有小伙伴需要把PPT打印,但苦于PPT太多,浪费纸张,所以特别写了这个合并多张PPT到一张A4纸上并生成PDF方便打印的程序: 前期准备 把PPT ...
- Java图片处理 - 创建工具类
Java图片处理 - 创建工具类 Java原生代码实现工具类 Java原生代码实现使用jdk内部的GIFImageReader.GIFImageWriter等类,maven在编译的时候会提示这是sun ...
最新文章
- QTP的那些事--不能识别web上的测试对象
- 专家提醒:计算机专业毕业生求职三要点!
- matlab datetime时间处理、时间转换
- LeetCode - Medium - 114. Flatten Binary Tree to Linked List
- 去除List集合中的重复元素,并保持原有数据的初始顺序
- 打不开文件F:\vmware -副本\Ubuntu 16.vmdk:该虚拟机的磁盘已经由虚拟机或者快照使用
- WinDbg使用摘要
- cnblogs用户体验评价
- 纽微特反省:经常跑同一个客户,也没新东西看
- VS2017适配版的 VA 安装教程
- CISP 考试教材《第 3 章 知识域:信息安全管理》知识整理
- android显示缩略图,Android:是否可以显示视频缩略图?
- javaScript学习笔记【尚硅谷】
- 对静态页面的一些理解
- 前端面试题之浏览器原理篇
- 什么是知识图谱?通俗易懂
- 3dsmax2021图文安装教程
- 阿里云 Elasticsearch简介和购买流程
- LeetCode 712. 两个字符串的最小ASCII删除和
- Jenkins:設定一次後就很方便的排程工具
热门文章
- R中namespace ‘xxxpackage’ xx版本 is being loaded, but >= xx版本 is required问题解决
- Linux下vi进入一个文件后,按Esc+q无法退出编辑模式的解决办法。
- 学习方法:十步学习法
- Adobe-字体名-字体family-对应关系
- es6.3.1 搜索中must和should混合的用法
- 邮件伪造测试-Swaks
- BlueTooth: 蓝牙基础知识进阶——Packet解析
- 「HTML和CSS入门指南」hr 标签详解
- 怎样在PS中使用渐变功能对图片调色?原来还有这样的调色模式!
- 计算机cad查询,CAD的查询功能