分割图片

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

分享到:

2012-08-21 15:51

浏览 9947

评论

2 楼

州孓123

2015-08-25

大神我拼的图,图片品质不是优啊,图片有些失贞,和用ps拼的图有些差距。请问怎么才能拼出正常的图啊。谢谢啦

非常好,简单好用,有图有code!

java 图片拼接_Java分割拼接图片相关推荐

  1. java 图片拼接_java 拼接文字和图片

    public static void test2() { try { // 读取第一张图片 // File fileOne = new File("D:\\qq.jpg"); // ...

  2. java 图片拼接_Java拼接多张图片,可以连接在一起 | 学步园

    /** * Java拼接多张图片 * * @param pics * @param type * @param dst_pic * @return */ public static boolean m ...

  3. java 渐进式_JAVA转换jpg图片为渐进式图片

    很早之前看到一篇<web前端图片极限优化策略>,了解有jpg分为baseline-jpeg和preogressive-jpeg. 具体的区别如下: baseline-jpeg: 在文件较大 ...

  4. java 锯齿_java 生产文字图片边缘有锯齿状

    java生产文字图片时如果文字边缘有锯齿状 可以添加 gd.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.V ...

  5. java水印_Java实现给图片添加图片水印,文字水印及马赛克的方法示例

    本文实例讲述了Java实现给图片添加图片水印,文字水印及马赛克的方法.分享给大家供大家参考,具体如下: 可以在eclipse中新建个Utils类,把以下代码复制进去直接使用,以下方法实现单个或多个水印 ...

  6. java拼接图片大小_Java实现图片拼接(注:图片需长宽一致)

    /** * 拼接图片(注:图片需长宽一致) * @param files img1 ,img2 * @param type 1:横向拼接 2:纵向拼接 * @param targetFile 合成新的 ...

  7. java获取服务器上的图片进行拼接

    1.从服务器下载图片保存到本地 package com.example.demo.util;import java.io.File; import java.io.FileOutputStream; ...

  8. android 图片拼接工具,拼接图片工具app

    截图拼接是一款非常好用的手机长图拼接工具,它的功能非常强大,支持图片拼接,无论是横向还是竖向拼接,一键设置,在这里小伙伴可以随时参与图片制作,帮助小伙伴制作出最佳的图片效果,操作也是很简单的,非常的方 ...

  9. java中文件处理之图片_Java中的文件处理

    java中文件处理之图片 File Handing in java comes under IO operations. Java IO package java.io classes are spe ...

最新文章

  1. 获取PHP中的完整URL
  2. 阿里云kafka使用记录(python版本)
  3. 一个C#写的调用外部进程类
  4. 常见的几种内排序算法以及实现(C语言)(转)
  5. Flowable工作流入门
  6. Ubuntu下挂载NTFS分区错误修复
  7. 话里话外:中小型装备制造企业竞争优势构建之路
  8. ECSHOP模板设置只有登录用户才能查看商品详情内容
  9. 关于BUCK-BOOST电路的负压生成
  10. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校专业
  11. 持NPDP和PMP证书,可以享受深圳、北京等多项福利!
  12. 数学建模与数据分析中的主成分分析
  13. VBA向单元格输入双引号
  14. Python 随堂练习
  15. 为docker容器单独分配ip
  16. windows 指纹识别不可用
  17. Android WebView显示广告
  18. 静态Hash解决数据颠簸问题
  19. 设计模式概述以及 23种设计模式的介绍
  20. 在非金融应用中在哪里使用区块链?

热门文章

  1. 登录mysql 1130_MySQL客户端 登录 ERROR 1130 解析
  2. 计算机打印的房子为什么不实现,打印机共享之后,为什么其他电脑还是搜索不到...
  3. 查找导致Simulink仿真缓慢的原因
  4. 为iPhone6设计自适应布局
  5. 让微积分穿梭于工作与学习之间(31):无穷-无穷,两根式相减的求解套路
  6. 柏睿数据总裁梁雪青:在智能制造上,流数据库用武之地更大
  7. 游戏是怎么赚钱的 - 聊聊挖坑
  8. PolyWorks2020:输入对象 选择单元 剪除单元
  9. PHP笔记-验证码例子
  10. 使用JQ遍历xml中指定节点下的所有节点名称