【知识积累】BufferedImage类实现图片的切分

简介: 如何实现图片分割?若有园友用到这个模块,使用Java的BufferedImage类来实现,图片切分也可以作为一个小工具积累起来,以备不时之需。

一、引言


  如何实现图片分割?若有园友用到这个模块,使用Java的BufferedImage类来实现,图片切分也可以作为一个小工具积累起来,以备不时之需。


二、代码清单 

package com.leesf.util;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
public class ImageUtil {
    // 切图
    public static ArrayList<BufferedImage> cutImage(String fileUrl, int rows,
            int cols, int nums) {
        ArrayList<BufferedImage> list = new ArrayList<BufferedImage>();
        try {
            BufferedImage img = ImageIO.read(new File(fileUrl));
            int lw = img.getWidth() / cols;
            int lh = img.getHeight() / rows;
            for (int i = 0; i < nums; i++) {
                BufferedImage buffImg = img.getSubimage(i % cols * lw, i / cols
                        * lh, lw, lh);
                list.add(buffImg);
            }
            return list;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }
    public static void main(String[] args) throws IOException {
        ArrayList<BufferedImage> biLists = ImageUtil.cutImage("img/image2.jpg",
                2, 2, 4);
        String fileNameString = "E:";
        int number = 0;
        String format = "jpg";
        for (BufferedImage bi : biLists) {
            File file1 = new File(fileNameString + File.separator + number
                    + "." + format);
            ImageIO.write(bi, format, file1);
            number++;
        }
    }
}

说明:可以切分任何图片,具体的参数园友可以自行配置~之后就可以在配置的目录下看到切分结果了。


三、总结


  要将平时遇到的一些小工具积累起来,以备不时之需。谢谢各位园友的观看~

目录
相关文章
|
4月前
|
数据采集 供应链 前端开发
数据中台怎么建,才不会变成“数据坟场”?
近年来,数据中台成为企业数字化转型的热点,但不少中台项目最终沦为“数据坟场”:系统上线却无人使用,数据堆积却难以调用,BI页面美观却无实际价值。本文深入剖析数据中台的本质与常见误区,指出中台建设的核心在于“用”而非“存”,强调数据应服务于业务决策与流程。通过五个关键步骤与三个建设阶段,指导企业如何打造真正有价值的数据中台,避免资源浪费与项目失败,推动数据在流动中创造业务价值。
数据中台怎么建,才不会变成“数据坟场”?
|
弹性计算 NoSQL 网络协议
阿里云ECS使用docker部署redis并远程连接
本文主要介绍如何在阿里云ECS服务器上通过docker部署redis,并在springboot项目中添加redis依赖进行远程连接。
阿里云ECS使用docker部署redis并远程连接
|
存储 自然语言处理 Java
Elasticsearch写入优化
【10月更文挑战第3天】Elasticsearch:从写入原理谈写入优化
412 2
|
监控 安全 Linux
Linux命令truss详解:系统调用跟踪的利器
`truss`(或`strace`)是Linux调试利器,用于跟踪系统调用和信号。它帮助开发者优化性能、调试错误和进行安全审计。通过附加到进程,记录调用细节、参数、返回值和错误。使用参数如`-d`显示调试信息,`-e`跟踪特定调用,`-o`输出到文件,`-p`跟踪指定进程。注意其对性能的影响,通常需要root权限,并建议过滤输出和结合其他工具分析。
|
SQL 存储 Oracle
大厂面试高频:聊下分库分表与读写分离的实现原理
本文详解了分库分表和读写分离的原理与实现,帮助解决大数据量下的性能瓶颈问题,大厂面试高频,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:聊下分库分表与读写分离的实现原理
|
监控 Unix 数据安全/隐私保护
告别中央服务器:Syncthing实现点对点文件同步
告别中央服务器:Syncthing实现点对点文件同步
673 3
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
509 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
Java 数据库连接 缓存
Hibernate性能调优:五大秘籍,让应用效能飙升,告别慢如蜗牛的加载,体验丝滑般流畅!
【8月更文挑战第31天】本文深入探讨了提升Hibernate应用性能的五大技巧,包括选择合适的缓存策略、优化查询语句、合理使用Eager与Lazy加载、批量操作与事务管理以及利用索引和数据库优化。通过正确配置多级缓存、分页查询、延迟加载、批量处理及合理创建索引,能够显著提高应用响应速度与吞吐量,改善用户体验。这些技巧需根据具体应用场景灵活调整,以实现最佳性能优化效果。
560 0
|
存储 缓存 监控
Elasticsearch Filter 缓存加速检索的细节,你知道吗?
【8月更文挑战第15天】在大数据与搜索引擎的广阔天地里,Elasticsearch 凭借其强大的全文搜索能力和可扩展性,成为了众多企业和开发者的首选。而在Elasticsearch的性能优化中,Filter缓存(也称为Filter Cache,自Elasticsearch 7.x版本后更名为Query Cache的一部分)扮演着至关重要的角色。今天,我们就来深入探讨一下Elasticsearch Filter缓存如何加速检索过程,以及在日常工作学习中如何有效利用这一特性。
289 0
|
分布式计算 前端开发 Java
Java的web框架
Java的web框架
391 1