java判断 图片_java判断文件是否是图片的方法

2023-10-30

java判断文件是否是图片的方法

发布时间:2020-06-10 18:32:53

来源:亿速云

阅读:278

作者:鸽子

java判断文件是否是图片的方法:

1、通过判断文件后缀名String extension = "";

int i = fileName.lastIndexOf('.');

if (i > 0) {

extension = fileName.substring(i+1);

}

//...

if("jpg".equals(extension)){

//your code

}

这种判断是用得比较多的一种方式,不过这种方式非常的不妥,别人稍微的把一个不是图片的文件的扩展名修改为图片的扩展名,就绕开了你的这种校验,如果这上传的文件是shell、PHP或者jsp,那你的网站基本上可以说就在别人的手里面了。

2、判断文件头

在后缀未知,或者后缀被修改的文件,依然通过文件头来判断该文件究竟是什么文件类型。我们可以使用一个文本编辑工具如UltraEdit打开文件(16进制模式下),然后看文件头是什么字符,以下是常见图片类型的文件头字符(16进制)JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

TIFF (tif),文件头:49492A00

Windows Bitmap (bmp),文件头:424D

3、通过MimetypesFileTypeMap来判断public class ImageCheck {

private MimetypesFileTypeMap mtftp;

public ImageCheck(){

mtftp = new MimetypesFileTypeMap();

/* 不添加下面的类型会造成误判 详见:http://stackoverflow.com/questions/4855627/java-mimetypesfiletypemap-always-returning-application-octet-stream-on-android-e*/

mtftp.addMimeTypes("image png tif jpg jpeg bmp");

}

public boolean isImage(File file){

String mimetype= mtftp.getContentType(file);

String type = mimetype.split("/")[0];

return type.equals("image");

}

}

4、通过ImageIO来判断( 该方法适用的图片格式为 bmp/gif/jpg/png)try {

// 通过ImageReader来解码这个file并返回一个BufferedImage对象

// 如果找不到合适的ImageReader则会返回null,我们可以认为这不是图片文件

// 或者在解析过程中报错,也返回false

Image image = ImageIO.read(file);

return image != null;

} catch(IOException ex) {

return false;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java判断 图片_java判断文件是否是图片的方法 的相关文章

  • 【华为OD机试真题 JAVA】猴子爬山阶梯跳跃问题

    标题 猴子爬山阶梯跳跃问题 时间限制 1秒 内存限制 262144K 语言限制 不限 一天一只顽猴想要从山脚爬到山顶 途中经过一个有n个台阶的阶梯 但是这个猴子有个习惯 每一次只跳1步或3步 试问 猴子通过这个阶梯有多少种不同的跳跃方式 输
  • C++运算符的优先级

    有括号的优先级最高 涉及对象的运算符 自增自减 取值 取地址运算符 逻辑非 按位取反 强制类型转换 长度运算符 先乘除后加减 左移右移运算符 比较运算符 三目运算符 各类赋值运算符 逗号运算符优先级最低 注意 同一优先级的运算符 运算次序由
  • ESOE之最后一篇

    ESOE 项目现已完成0 2版 并开辟了一个站点放置 因此作者不会再在这里进行更新了 感兴趣的朋友请访问 http www viviasoft com esoe home gb index htm 第一次以网志形式计划一个项目 多谢cdsn
  • JS继承(含ES6)或者两个类A,B,B如何继承A

    JS继承方式有很多 主要分ES5和ES6继承的实现 先说一下ES5是如何实现继承的 ES5实现继承主要是基于prototype来实现的 具体有三种方式 一是原型链继承 即B prototype new A 二是借用构造函数 call 或者
  • 对于d3dcompiler_47.dll丢失问题,几种详细解决方法

    d3dcompiler 47 dll是Direct3D编译器的动态链接库文件 它是DirectX的一部分 DirectX是由微软开发的一组应用程序接口 API 用于在Windows操作系统上实现多媒体和游戏的高性能图形和声音效果 d3dco
  • 数据结构和算法学习之骑士周游算法(贪心优化)

    package com atguigu horse import java awt import java util ArrayList import java util Comparator import java util Sorted
  • 看论文技巧

    带着目的去看论文 漫无目的看论文效率不仅低下 而且啥都没学到 还不如直接打开手机刷抖音 每篇论文的abstract和methodology是最重要的 用来判断这篇论文读的价值 如果整篇论文的点不够核心或者和你不相关 直接下一篇 Relate
  • 【Audio音频兴趣拓展】TDD noise是如何产生的?

    GSM 蜂窝电话采用 TDMA Time Division Multiple Access 时分多址 时隙分享技术 时分多址把时间分割成周期性的帧 每一个帧再分割成若干个时隙向基站发送信号 基站发向多个移动终端的信号也都按顺序安排在预定的时
  • linux 删除所有子目录下的指定文件/文件夹(转载)

    linux 删除所有子目录下的指定文件 文件夹 采用find exec组合来完成 find alipay demo type d name pycache exec rm rf 说明 alipay demo 为待查询的开始目录 从此目录开始
  • 从删除顺序表中所有值为X的元素说起,谈谈python中删除list某个元素的方法

    一个题目 长度为n的顺序表L中删除所有值为X的数据元素 要求时间复杂度为 O n O n O n 空间复杂度为 O
  • 【BW系列】SAP 讲讲BW/4 HANA和BW on HANA的区别

    公众号 SAP Technical 本文作者 matinal 原文出处 http www cnblogs com SAPmatinal 原文链接 BW系列 SAP 讲讲BW 4 HANA和BW on HANA的区别 前言部分 大家可以关注我
  • 操作系统基础知识之处理器性能方程指标(包含阿达姆定律、CPI、Clock cycle time等)

    计算机设计人员通过持续时间或速率来指代时钟周期的时间 程序的 CPU 时间可以用两种方式表示 CPU 时间 程序的 CPU 时钟周期 时钟频率 除了执行程序所需的时钟周期数外 我们还可以计算执行的指令数 如果我们知道时钟周期数和指令数 就可
  • SpringBoot 日志框架

    SpringBoot日志框架 项目中日志系统是必不可少的的 目前比较流行的日志框架有log4j logback等 slf4j Simple Logging Facade for Java 则是一个日志门面框架 提供了日志系统中常用的接口 l
  • Windows System32下常见快捷指令

    Windows System32下常见快捷指令 win R 命令行窗口 cmd dos命令窗口 mstsc 远程登录输入窗口 calc 快速打卡计算器 control 打开控制面板 eventvwr 打开事件管理器 ipconfig ip查
  • spring_day01_IOC

    1 spring 概述 1 1 框架的概述 框架是一个封装了很多功能和模块的程序的半成品 可以理解为一个由很多工具类组成的一个工具包 1 2 spring的概念 spring是分层的JavaSE EE应用full stack轻量级开源框架
  • NOIP2016初赛总结(提高组)

    题目 https www zhihu com question 51865837 answer 127892121 注 我是HE的 不是JS的 照片是ZYJ神犇的 单选 一 单项选择题 共15 题 每题1 5 分 共计22 5 分 每题有且
  • ES索引库的别名的强大功能

    ES 的别名不停服切换索引 线上发布 场景 我们现在线上正在使用 ES索引库 V 没有使用ES索引库别名 两个问题 现在由于字段更新 把线上的数据重新写入了V1库 现在如何在不断服的情况下 完美的实现 从V 切换到V1 索引库 后续如果再次
  • 基于Matlab实现帧间差分法的运动目标检测(附上完整源码+图像+程序运行说明)

    帧间差分法是一种常用的运动目标检测方法 可以通过对连续帧之间的差异进行分析来确定目标的运动情况 在本文中 我们将介绍如何使用Matlab实现帧间差分法的运动目标检测 文章目录 部分源码 完整源码 图像 程序运行说明下载 部分源码 首先 我们
  • 离线安装npm包

    1 先在联网机器上下载安装npm bundle和http server 以管理员身份运行打开cmd 然后npm install npm bundle 或者 cnpm install npm bundle npm install http s

随机推荐

  • Springboot 封装Fastdfs 功能模块

    整体项目结构 第一步 BuleSky 的pom xml 文件
  • android apk应用系统集成编译错误问题

    在系统源码中添加一个APK源码目录 并写了相应的android mk文件 编译时出错如下 make No rule to make target out target common obj JAVA LIBRARIES liba71S in
  • ServletRequest和HttpServletRequest为什么可以强制转换

    ServletRequest强制转换为HttpServletRequest为什么没报错呢 先看一下普通转换 1 父类对象强转成子类 出错ClassCastException Father f new Father Son s Son f 2
  • 插入排序的递归算法

    一 算法思想 由插入排序的基本思想可以得到它的递归算法 确定前面的数是已经排好序了的 从当前数开始 依次一个个的插入到前面的数中 二 代码 插入排序的递归算法 void insert vector
  • 【C++】multiset用法

    转自 https blog csdn net sodacoco article details 84798621 c 语言中 multiset是
  • 【Clipping input data to the .... for integers).】的解决办法

    Clipping input data to the for integers 的解决办法 参考资料 https www freesion com article 7534157435 在用matplotlib pyplot显示输入图像时
  • 磁盘扩容(LVM)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 磁盘扩容 LVM 一 LVM是什么 二 LVM制作 创建LVM逻辑卷 创建pv 物理卷 创建vg 卷组 创建lv 逻辑卷 制作文件系统并挂载 制作文件系统 格式化 挂载 查看
  • IDEA的基本使用

    1 设置字体 2 改背景颜色默认为白色 file gt settings Darcula是黑色 3 设置maven 4 单个项目工程的设置 使用idea创建java项目 sdk默认是内置的 我们要选择自己的 jdk idea中 一个项目就是
  • 专访 UIUC 李博

    ChatGPT 的出现让 AI 再次引起了一场科技圈的震动 这场震动影响深远 让科技界分为两派 一派认为 AI 迅速发展可能会在不久后取代人类 这种 威胁论 虽然不无道理 但另一派也提出不同观点 AI 的智力水平依然尚未赶超人类甚至 还不如
  • 如何安装stegdetect(Windows下)

    一 stegdetect 简介 1 笼统的来说 stegdetect 就是用来检测jpg类型的图片是否隐藏着其他文件或内容 据说 他还会尝试识别是用什么隐写工具将额外的信息隐藏在图片中 2 使用stegdetect时会有一些参数 下面简单罗
  • 安装pip install tensorflow==1.14报错

    pip install tensorflow 1 14 一直报错 显示只能安装2 0 以上版本时 请确认python版本是否低于3 8 3 8以上版本不支持1 x 将python 降级为3 7即可
  • 【oracle19c创建表空间及用户】

    一 oracle创建表空间及用户 1 查看当前连接的容器 SQL gt show con name CON NAME CDB ROOT 此时使用的是CDB容器 需要切换到PDB中进行 2 查看pdb下库的信息 SQL gt select n
  • Linux下安装python及更改系统原有python

    Linux下安装python及更改系统原有python 1 Linux下安装python linux中下载安装的源码文件一般习惯放在 usr local src 中 src是source的缩写 进入该目录 用wget 下载就行 假设我下载的
  • 前后端分离理解

    历史渊源 借Jsp来举例 jsp就是一个典型的前后端耦合在一起的典型的计数案例 这种模式在以前互联网不那么繁荣 web化趋势还不是那么明显的年代发挥着巨大的作用 但是随着社会技术的不断加深 各种各样的服务都web化以后 其实很多前端展示的东
  • Linux内核:配置内核(一)

    本文译自Linux orgDevynCJohnson的系列文章 Linux内核 本篇链接 http www linux org threads the linux kernel configuring the kernel part 1 4
  • Python实现 身体质量指数BMI的计算(嵩天老师)

    示例5 身体质量指数BMI BMI的定义 BMI 国际上常用的衡量人体肥胖和健康程度的重要标准 主要用于统计分析 定义 BMI 体重 kg 身高 身高 m m 身体质量指数标准 思路方法 难点在于同时输出国际和国内对应的分类 思路1 分别计
  • C++中cin.clear()的用法

    我们谈谈cin clear的作用 第一次看到这东西 很多人以为就是清空cin里面的数据流 而实际上却与此相差很远 首先我们看看以下代码 include
  • C++多线程加锁详解(易于理解)

    参考 C 多线程基础教程 c 11多线程之使用std try to lock摸鱼 include lt mutex gt mutex m 实例化对象m m lock 不推荐这么做 如果忘记unlock会锁死 m unlock 使用lock
  • Python基础篇(三)-- 列表、元组、字典、集合、字符串

    前面一篇简单介绍了Python的数据类型与运算符 这一节主要学习Python中5种常用序列结构 列表 元组 集合 字典和字符串的详细使用和一些技巧 下图概括了本篇的主要内容 1 序列 在数学上 序列也称数列 按一定顺序排列的数 程序设计中序
  • java判断 图片_java判断文件是否是图片的方法

    java判断文件是否是图片的方法 发布时间 2020 06 10 18 32 53 来源 亿速云 阅读 278 作者 鸽子 java判断文件是否是图片的方法 1 通过判断文件后缀名String extension int i fileNam