ファイルストリームまたはバイト配列によるファイルの真のタイプの判断

1974 ワード

最近tif画像フォーマットの変換をして、ツールクラスを書いてファイルのタイプを判断します

@Override
	public String receiveImages(byte[] imageBytes) {
		/************** start******************/
		byte[] fileTypeByte = new byte[4]; 
	 	System.arraycopy(imageBytes, 0, fileTypeByte, 0, fileTypeByte.length); 
	 	String imageType = getTypeByStream(fileTypeByte);
	 	/************** end******************/
}
/**
	  * byte 16 
	  * @param src add by sgh
	  * @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 is
	  * @return
	  */
	 public static String getTypeByStream(byte[] fileTypeByte){
	  
	        String type = bytesToHexString(fileTypeByte).toUpperCase();
	        if(type.contains("FFD8FF")){
	         return "jpg";
	        }else if(type.contains("89504E47")){
	         return "png";
	        }else if(type.contains("47494638")){
	         return "gif";
	        }else if(type.contains("49492A00")){
	         return "tif";
	        }else if(type.contains("424D")){
	         return "bmp";
	        }else{
	        	return null;
	        }
	    }