【Java】画像ファイルを2分割する

分割側コード


import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import javax.imageio.ImageIO;

public class ImageDivided {
  private InputStream inputStream;
  
  public ImageDivided(InputStream inputStream) {
    this.inputStream = inputStream;
  }
  
  public ArrayList<BufferedImage> GetDividedInto2(){
    var ret = new ArrayList<BufferedImage>(2);
    try{
      var originalImage = ImageIO.read(this.inputStream);

      var width = originalImage.getWidth();
      var height = originalImage.getHeight();
      var halfWidth = width / 2;

      var leftHalfImage = originalImage.getSubimage(0, 0, halfWidth, height);
      var rightHalfImage = originalImage.getSubimage(halfWidth, 0, halfWidth, height);
      ret.add(leftHalfImage);
      ret.add(rightHalfImage);
    }catch(Exception e){
    }
    return ret;
  }
}

使う側コード


import java.io.File;
import java.io.FileInputStream;

import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;

public static void main(String[] args){
  var imageDivided = new ImageDivided(new FileInputStream(画像ファイル));
  
  var ret = imageDivided.GetDividedInto2();
  
  var writers = ImageIO.getImageWritersByFormatName("jpeg");
  var writer = (ImageWriter)writers.next();
  
  var outputStream = ImageIO.createImageOutputStream(new File(出力ファイル1));
  writer.setOutput(outputStream);
  writer.write(ret.get(0));
  
  outputStream = ImageIO.createImageOutputStream(new File(出力ファイル2));
  writer.setOutput(outputStream);
  writer.write(ret.get(1));
}