下面两种代码判断是图片还是视频

public static String getMimeType(String fileName) {
        FileNameMap fileNameMap = URLConnection.getFileNameMap();
        String type = fileNameMap.getContentTypeFor(fileName);
        return type;
}

判断是视频还是图片

/**
     * @return int
     * @Author qtl
     * @Description 鉴定文件是图片还是视频
     * @Date 18:58 2020/9/27
     * @Param [file]
     **/
    @PostMapping("/getFileType")
    public int getFileType(String fileName) {
        int i = 0;
        FileNameMap fileNameMap = URLConnection.getFileNameMap();
        String contentTypeFor = fileNameMap.getContentTypeFor(fileName);
        //下面是进一判断是视频和图片的区别
        if (contentTypeFor != null) {// 当是图片时不为空,是视频时为空
            i = 1;
        }
        return i; 
    }

用JAVA获取视频文件中的帧图片并等比缩放

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
 
public class Grabber {
 
	/**
	 * 获取指定视频的帧并保存为图片至指定目录
	 * @param videofile  源视频文件路径
	 * @param framefile  截取帧的图片存放路径
	 * @throws Exception
	 */
	public static void fetchFrame(String videofile, String framefile)
			throws Exception {
		long start = System.currentTimeMillis();
		File targetFile = new File(framefile);
		FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile); 
		ff.start();
		int lenght = ff.getLengthInFrames();
		int i = 0;
		Frame f = null;
		while (i < lenght) {
			// 过滤前100帧
			f = ff.grabFrame();
			if ((i > 100) && (f.image != null)) {
				break;
			}
			i++;
		}
		IplImage img = f.image;
		int owidth = img.width();
		int oheight = img.height();
		// 对截取的帧进行等比例缩放
		int width = 270;
		int height = (int) (((double) width / owidth) * oheight);
		BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
        bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),
                0, 0, null);
		ImageIO.write(bi, "jpg", targetFile);
		//ff.flush();
		ff.stop();
		System.out.println(System.currentTimeMillis() - start);
	}
 
	public static void main(String[] args) {
		try {
			Grabber.fetchFrame("E:\\ceshi\\11.mp4", "E:\\ceshi\\test.jpg");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

java 判断图片后缀_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"))));