原创

这是一片测试文章

我总想 这没用,那没用

那到底什么有用呢

只要做一点,就有一点的用处。
不做,只去用狭隘的眼光去评论,永远是最没用的。

package cn.kahun.test;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Objects;

public class ImageTypeTest {

  /**
   * jpg jpe jpeg 均为同一种类型
   */
  private static final String IMAGE_JPG_FLAG = "FFD8FF";
  private static final String IMAGE_PNG_FLAG = "89504E47";

  public static void main(String[] args) throws IOException {

    byte[] imageContent = Files.readAllBytes(Paths.get("/Users/prague/Pictures/testInvoice/red.jpeg"));

    String type = confirmImageType(imageContent);

    System.out.println(type);

  }

  private static String confirmImageType(byte[] imageContent){

    byte[] typeBytes = new byte[4];

    System.arraycopy(imageContent, 0, typeBytes, 0, 4);

    String str = Objects.requireNonNull(bytesToHexString(typeBytes)).toUpperCase();

    if (str.contains(IMAGE_JPG_FLAG)){

      return "JPG";
    }else if (str.contains(IMAGE_PNG_FLAG)){

      return "PNG";
    }else{

      throw new RuntimeException("识别图片类型出错,目前只支持JPG、PNG");
    }
  }

  /**
   * 字符转16进制,根据前几位判断图片类型
   * @param src imageContent
   * @return str imageContent
   */
  private static String bytesToHexString(byte[] src) {
    StringBuilder stringBuilder = new StringBuilder();
    if (src == null || src.length <= 0) {
      return null;
    }
    for (byte b : src) {
      int v = b & 0xFF;
      String hv = Integer.toHexString(v);
      if (hv.length() < 2) {
        stringBuilder.append(0);
      }
      stringBuilder.append(hv);
    }
    return stringBuilder.toString();
  }

}

这是一篇测试文章,用来测试代码展示的。

确实是一篇没有啥用的文字,不过自己的博客,想怎么写就怎么写了。

单纯就是测试下为什么博客展示的代码背景为什么不是黑色的,然后怎么加右上角的代码复制功能。

如果你不幸点进来,恭喜你不小心浪费了5秒钟。

另外,来都来了。如果你知道怎么把代码背景改成黑色的话,告诉我。搞好请你喝奶茶。

正文到此结束