java如何判断文件是否为图片

java如何判断文件是否为图片,第1张

java中提供了ImageInputStream类来对文件是否为图片进行判断,示例如下:

/** 

  * 判断文件是否为图片<br> 

  * <br> 

  * @param pInput 文件名<br> 

  * @param pImgeFlag 判断具体文件类型<br> 

  * @return 检查后的结果<br> 

  * @throws Exception 

  */ 

public static boolean isPicture(String  pInput, 

                           String pImgeFlag) throws Exception{ 

  // 文件名称为空的场合 

  if(Check.isNull(pInput)){ 

   // 返回不和合法 

   return false 

  } 

  // 获得文件后缀名 

  String tmpName = pInput.substring(pInput.lastIndexOf(".") + 1, 

                              pInput.length()) 

  // 声明图片后缀名数组 

  String imgeArray [][] = { 

    {"bmp", "0"}, {"dib", "1"}, {"gif", "2"}, 

    {"jfif", "3"}, {"jpe", "4"}, {"jpeg", "5"}, 

    {"jpg", "6"}, {"png", "7"} ,{"tif", "8"}, 

    {"tiff", "9"}, {"ico", "10"} 

  } 

  // 遍历名称数组 

  for(int i = 0 i<imgeArray.lengthi++){ 

   // 判断单个类型文件的场合 

   if(! Check.isNull(pImgeFlag) 

      && imgeArray [i][0].equals(tmpName.toLowerCase()) 

   && imgeArray [i][1].equals(pImgeFlag)){ 

    return true 

   } 

   // 判断符合全部类型的场合 

   if(Check.isNull(pImgeFlag) 

      && imgeArray [i][0].equals(tmpName.toLowerCase())){ 

    return true 

   } 

  } 

  return false 

}

那还不一定.PictureBox不能加载PNG但PNG是图片。

可以这样判断扩展名

所有图片格式的扩展名:

bmp

dib

gif

png

rle

tif

tiff

bw

cdr

col

dwg

dxb

dxf

wmf

emf

eps

ico '俗称图标 但也是图片

iff

jpg

jpeg

lbm

mag

mac

mpt

msk

opt

ply

pbm

pgm

ppm

pcd

pcx

pic

pict

pict2

pnt

psd

pxr

ras

raw

tga

win

xbm

以上全部是图片的扩展名。

从结构上来看就好像会很复杂,还要知道图片是怎么编码的....还是判断扩展名比较好

这样,当把一个非图片文件的扩展名改为jpg、gif或者bmp时,就能绕过限制。所以必须得通过读取文件内容来进行判断。这里提供两种实现代码。1、ImageInputStream iis = ImageIO.createImageInputStream(resFile)//resFile为需被Iterator&ltImageReader&gtiter = ImageIO.getImageReaders(iis)if (!iter.hasNext()) {//文件不是图片 System.out.println(&quot此文件不为图片文件&quot)}2、BufferedImage bi = ImageIO.read(resFile)if(bi == null){ System.out.println(&quot此文件不为图片文件&quot)}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6080218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存