package com.railway.common.utils.file;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.util.IOUtils;

/**
 * 图片处理工具类
 *
 * @author railway
 */
@Slf4j
public class ImageUtils {

  public static byte[] getImage(String imagePath) {
    try (InputStream is = getFile(imagePath)) {
      assert is != null;
      return IOUtils.toByteArray(is);
    } catch (Exception e) {
      log.error("图片加载异常 {}", e.getMessage());
      return null;
    }
  }

  public static InputStream getFile(String imagePath) {
    try {
      byte[] result = readFile(imagePath);
      assert result != null;
      result = Arrays.copyOf(result, result.length);
      return new ByteArrayInputStream(result);
    } catch (Exception e) {
      log.error("获取图片异常 {}", e.getMessage());
    }
    return null;
  }

  /**
   * 读取文件为字节数据
   *
   * @return 字节数据
   */
  public static byte[] readFile(String url) {
    InputStream in = null;
    try {
      // 网络地址
      URL urlObj = new URL(url);
      URLConnection urlConnection = urlObj.openConnection();
      urlConnection.setConnectTimeout(30 * 1000);
      urlConnection.setReadTimeout(60 * 1000);
      urlConnection.setDoInput(true);
      in = urlConnection.getInputStream();
      return IOUtils.toByteArray(in);
    } catch (Exception e) {
      log.error("获取文件路径异常 {}", e.getMessage());
      return null;
    } finally {
      IOUtils.closeQuietly(in);
    }
  }
}
