欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)圖片拼接

 更新時間:2018年08月07日 08:41:06   作者:Abel-Luan  
這篇文章主要為大家詳細介紹了Java實現(xiàn)圖片拼接的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現(xiàn)圖片拼接的具體代碼,供大家參考,具體內(nèi)容如下

/**
 * 拼接圖片(注:圖片需長寬一致)
 * @param files  img1 ,img2
 * @param type  1:橫向拼接 2:縱向拼接
 * @param targetFile 合成新的圖片地址
 */
public static void mergeImage(String[] files, int type, String targetFile) {
 int len = files.length;
 if (len < 1) {
  throw new RuntimeException("圖片數(shù)量小于1");
 }
 File[] src = new File[len];
 BufferedImage[] images = new BufferedImage[len];
 int[][] ImageArrays = new int[len][];
 for (int i = 0; i < len; i++) {
  try {
   src[i] = new File(files[i]);
   images[i] = ImageIO.read(src[i]);
  } catch (Exception e) {
   throw new RuntimeException(e);
  }
  int width = images[i].getWidth();
  int height = images[i].getHeight();
  ImageArrays[i] = new int[width * height];
  ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
 }
 int newHeight = 0;
 int newWidth = 0;
 for (int i = 0; i < images.length; i++) {
  // 橫向
  if (type == 1) {
   newHeight = newHeight > images[i].getHeight() ? newHeight : images[i].getHeight();
   newWidth += images[i].getWidth();
  } else if (type == 2) {// 縱向
   newWidth = newWidth > images[i].getWidth() ? newWidth : images[i].getWidth();
   newHeight += images[i].getHeight();
  }
 }
 if (type == 1 && newWidth < 1) {
  return;
 }
 if (type == 2 && newHeight < 1) {
  return;
 }
 // 生成新圖片
 try {
  BufferedImage ImageNew = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
  int height_i = 0;
  int width_i = 0;
  for (int i = 0; i < images.length; i++) {
   if (type == 1) {
    ImageNew.setRGB(width_i, 0, images[i].getWidth(), newHeight, ImageArrays[i], 0,
      images[i].getWidth());
    width_i += images[i].getWidth();
   } else if (type == 2) {
    ImageNew.setRGB(0, height_i, newWidth, images[i].getHeight(), ImageArrays[i], 0, newWidth);
    height_i += images[i].getHeight();
   }
  }
  //輸出想要的圖片
  ImageIO.write(ImageNew, targetFile.split("\\.")[1], new File(targetFile));
 } catch (Exception e) {
  throw new RuntimeException(e);
 }
}


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談基于Token的WEB后臺認證機制

    淺談基于Token的WEB后臺認證機制

    這篇文章主要介紹了淺談基于Token的WEB后臺認證機制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • springcloud教程之zuul路由網(wǎng)關(guān)的實現(xiàn)

    springcloud教程之zuul路由網(wǎng)關(guān)的實現(xiàn)

    這篇文章主要介紹了springcloud教程之zuul路由網(wǎng)關(guān)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 一篇文章帶你了解JAVA面對對象三大特征之封裝

    一篇文章帶你了解JAVA面對對象三大特征之封裝

    所有的面向?qū)ο缶幊陶Z言的思路都是差不多的,而這三大特性,則是思路中的支柱點,接下來我就重點講解了一下java三大特性-封裝,感興趣的朋友跟隨腳本之家小編一起看看吧
    2021-08-08
  • Spring導(dǎo)入properties配置文件代碼示例

    Spring導(dǎo)入properties配置文件代碼示例

    這篇文章主要介紹了Spring導(dǎo)入properties配置文件代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • redis分布式鎖的原理及代碼實例

    redis分布式鎖的原理及代碼實例

    這篇文章主要介紹了redis分布式鎖的原理及代碼實例,Redis作為一款高性能內(nèi)存數(shù)據(jù)庫,其提供了一種非常實用的分布式鎖解決方案,可以幫助開發(fā)人員輕松地實現(xiàn)分布式鎖功能,對于分布式系統(tǒng)的開發(fā)和維護,具有非常大的實用價值,需要的朋友可以參考下
    2024-01-01
  • Java源碼解析Integer方法解讀

    Java源碼解析Integer方法解讀

    這篇文章主要介紹了Java源碼解析Integer方法解讀,包括toString方法、toUnsignedString方法、highestOneBit方法等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Spring-Boot框架初步搭建

    Spring-Boot框架初步搭建

    本篇文章主要介紹了Spring-Boot框架初步搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Spring中@ConfigurationProperties的用法解析

    Spring中@ConfigurationProperties的用法解析

    這篇文章主要介紹了Spring中@ConfigurationProperties的用法解析,傳統(tǒng)的Spring一般都是基本xml配置的,后來spring3.0新增了許多java config的注解,特別是spring boot,基本都是清一色的java config,需要的朋友可以參考下
    2023-11-11
  • Springboot整合Swagger3全注解配置(springdoc-openapi-ui)

    Springboot整合Swagger3全注解配置(springdoc-openapi-ui)

    本文主要介紹了Springboot整合Swagger3全注解配置(springdoc-openapi-ui),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java多線程 原子性操作類的使用

    Java多線程 原子性操作類的使用

    這篇文章主要介紹了Java多線程 原子性操作類的使用,在java5以后,我們接觸到了線程原子性操作,也就是在修改時我們只需要保證它的那個瞬間是安全的即可,經(jīng)過相應(yīng)的包裝后可以再處理對象的并發(fā)修改,本文總結(jié)一下Atomic系列的類的使用方法,下面一起進入文章了解詳細內(nèi)容
    2021-10-10

最新評論