用图片的exif信息,即图片拍摄信息判断图片是否被PS过。
原理:图片exif信息只有拍摄的图片才有的信息,比如拍摄角度,曝光度等。
图片被专业软件修改,如Photoshop打码,exif信息中会有该软件信息
截图是没有exif信息的,图片被修改,或经微信,qq转发,Exif信息都会丢失。
图片被ps:exif信息丢失,或exif信息中software字段有修改软件的相关信息
查看图片的Exif信息的两种方法:
1、Exif信息在线查看器地址:https://www.gaitubao.com/exif
2、右键图片属性–》点击详细信息
添加依赖
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.11.0</version>
</dependency>
测试代码
public class GetExifInfo {
public static void main(String[] args) throws Exception {
String path = "C:/Users/Administrator/Desktop/10-车辆照片12/2.jpg";
String pathStr = new String(path.getBytes(), "utf-8");
//testImageIO(pathStr);
boolean psFlag= test(pathStr);
if (psFlag) {
System.out.println("图片合格,图片没被ps过");
} else {
System.out.println("图片被ps过了");
}
}
public static boolean test(String imagePath) {
File jpegFile = new File(imagePath);
boolean flag = false;
try {
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
String tagName = tag.getTagName();
String desc = tag.getDescription();
if ("Date/Time Original".equals(tagName)) {
System.out.println("拍照时间: " + DateUtil.formDate(desc));
} else if ("Date/Time".equals(tagName)) {
System.out.println("创建时间: " + DateUtil.formDate(desc));
}
if ("File Name".equals(tagName)) {
System.out.println("文件名称:" + desc);
}
if ("Software".equals(tagName)) {
System.out.println("应用程序:" + desc);
}
if ("Orientation".equals(tagName)) {
System.out.println("图片拍摄位置:" + desc);
}
}
}
if (creatTime == null || orientation == null || "Adobe Photoshop CS4 Windows".equals(Software) || "www.meitu.com".equals(Software)) {
return flag;
}
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
}
DateUtil工具类
public class DateUtil {
public static String formDate(String date){
SimpleDateFormat oldFormat = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date olDate = oldFormat.parse(date);
return newFormat.format(olDate);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
输出结果
图片拍摄位置:Top, left side (Horizontal / normal)
应用程序:Adobe Photoshop CS4 Windows
创建时间: 2018-09-10 17:17:43
文件名称:0.jpg
图片被ps过了