• java代码判断图片文件格式, 不是根据文件后缀来判断。


    public static final String TYPE_JPG = "jpg";
        public static final String TYPE_GIF = "gif";
        public static final String TYPE_PNG = "png";
        public static final String TYPE_BMP = "bmp";
        public static final String TYPE_UNKNOWN = "unknown";
    
    /**
         * byte数组转换成16进制字符串
         * @param src
         * @return
         */
        public static String bytesToHexString(byte[] src){    
               StringBuilder stringBuilder = new StringBuilder();    
               if (src == null || src.length <= 0) {    
                   return null;    
               }    
               for (int i = 0; i < src.length; i++) {    
                   int v = src[i] & 0xFF;    
                   String hv = Integer.toHexString(v);    
                   if (hv.length() < 2) {    
                       stringBuilder.append(0);    
                   }    
                   stringBuilder.append(hv);    
               }    
               return stringBuilder.toString();    
           }
        
    
        /**
         * 根据文件流判断图片类型
         * @param fis
         * @return jpg/png/gif/bmp
         */
        public static String getPicType(FileInputStream fis) {
            //读取文件的前几个字节来判断图片格式
            byte[] b = new byte[4];
            try {
                fis.read(b, 0, b.length);
                String type = bytesToHexString(b).toUpperCase();
                if (type.contains("FFD8FF")) {
                    return TYPE_JPG;
                } else if (type.contains("89504E47")) {
                    return TYPE_PNG;
                } else if (type.contains("47494638")) {
                    return TYPE_GIF;
                } else if (type.contains("424D")) {
                    return TYPE_BMP;
                }else{
                    return TYPE_UNKNOWN;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(fis != null){
                    try {
                        fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return null;
        }
    
    //test code
    System.out.println("图片格式1: " + getPicType(new FileInputStream(new File("D:\3_副本.png"))));
    System.out.println("图片格式2: " + getPicType(new FileInputStream(new File("D:\3.png"))));
  • 相关阅读:
    saveField方法
    cake使用事务的方法
    css 中引用css的方法
    一次标准的关联查询
    try cath用处
    使用其他模型分页$data = $this>paginate('MerchantProductOrder');
    jquery 常用代码
    php 邮箱验证原理
    cake 分页一个典型的条件
    一次典型的查询
  • 原文地址:https://www.cnblogs.com/simpledev/p/3842334.html
Copyright © 2020-2023  润新知