检测图片是否被PS过,代码案例demo

用图片的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过了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值