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)}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)