使用java代码怎样判断文章类型是图片和视频

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

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"))));
125分50秒---162.81M---LabView01---第10章数据的显示.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView01-第10章数据的显示.wmv 92分2秒---143.46M---LabView02---第11章文件的IO及保存.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView02-第11章文件的IO及保存.wmv 37分22秒---58.09M---LabView03---第12章LabVIEW的通信.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView03-第12章LabVIEW的通信.wmv 9分58秒---21.2M---LabView04---第13章LabVIEW与其它软件的连接.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView04-第13章LabVIEW与其它软件的连接.wmv 4分45秒---9.99M---LabView05---第14章LabVIEW中子VI的设置及调用.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView05-第14章LabVIEW中子VI的设置及调用.wmv 34分30秒---61.03M---LabView06---第15章其它高级技巧.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView06-第15章其它高级技巧.wmv 9分41秒---11.37M---LabView07---第2章第一个LabVIEW例子.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView07-第2章第一个LabVIEW例子.wmv 86分58秒---140.25M---LabView08---第3章基本元素.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView08-第3章基本元素.wmv 76分48秒---143.72M---LabView09---第4章程序结构.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView09-第4章程序结构.wmv 5分46秒---14.67M---LabView10---第5章数据采集.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView10-第5章数据采集.wmv 12分50秒---18.35M---LabView11---第6章数据传输及电脑接口.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView11-第6章数据传输及电脑接口.wmv 59分57秒---87.83M---LabView12---第7章数据的分析及处理.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView12-第7章数据的分析及处理.wmv 42分4秒---61.02M---LabView13---第8章LabVIEW的信号调理.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView13-第8章LabVIEW的信号调理.wmv 132分19秒---178.86M---LabView14---第9章分析处理中数学计算.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView14-第9章分析处理中数学计算.wmv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值