利用PHP判斷文件是否為圖片的方法總結(jié)_第1頁(yè)
利用PHP判斷文件是否為圖片的方法總結(jié)_第2頁(yè)
利用PHP判斷文件是否為圖片的方法總結(jié)_第3頁(yè)
利用PHP判斷文件是否為圖片的方法總結(jié)_第4頁(yè)
利用PHP判斷文件是否為圖片的方法總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

利用PHP判斷文件是否為圖片的方法總結(jié)

要判斷一個(gè)文件是否為圖片的功能,通過查找相關(guān)的資料找到了幾種方法,包括

利用getimagesize函數(shù)獲取圖片信息然后進(jìn)行判斷或讀取圖片的前2個(gè)字節(jié)

等方法。下面來一起看看詳細(xì)的介紹吧需要的朋友可以參考下。

前言

在網(wǎng)頁(yè)設(shè)計(jì)中,如果需要圖片,我們通常拿到的是一個(gè)圖片的文件名。僅僅通過

文件名是無法判斷該文件是否是一個(gè)圖片文件的?;蛟S有的人以為通過后綴名就

可以判斷,別忘了文件的后綴名是可以隨便改動(dòng)的。更何況,在Linux系統(tǒng)下

是不以后綴來區(qū)分文件格式的。如果天真的以為通過后綴名就能區(qū)分圖片,那可

能出現(xiàn)錯(cuò)誤時(shí),你連錯(cuò)誤在哪兒都不知道。比如有一個(gè)討厭的人把一個(gè)文本文件

改成backgroundjpg然后給你用,你可能只會(huì)簡(jiǎn)單的認(rèn)為這個(gè)圖片被損壞了,

萬萬沒想到它竟然僅僅是一個(gè)文本文件。

為了避免—些不必要的問題出現(xiàn),在拿到—個(gè)圖片時(shí),應(yīng)該正確的判斷該文件是

否真的—個(gè)圖片文件。這里總結(jié)了三種判斷方法,有需要的朋友們可以—起來看

看吧。

方法一

利用getimagesize函數(shù)獲取圖片信息,然后進(jìn)行判斷:

<?php#Script--isimg.php

1

2

/*Author@Huoty

*Date@2015-11-2416:59:26

3

*Brief@

4*/

5

functionisimage($filename)

6{

7$types='.gifl.jpegl.pngl.bmp';//定義檢查的圖片類型

if(file_exists($filename))

8

{

9if(($info=@getimagesize($))

10return0;

11

12$ext=image_type_to_extension($info['2']);

13returnstripos($types,$ext);

}

14

else

{

15

returnfalse;

1167

}

}

18

if(isimage('isimg.txt')!==false)

{

19

echoisImage('1.jpg');

20

echo'是圖片';

222123

}

else

{

h,不是圖)上,

ec。7.'

}

24?>

25

26

27

28

29

30

31

32

33

34

方法二

讀取圖片的前2個(gè)字節(jié),然后判斷是不是圖片:

<?php#Script--isimg2.php

1

2

/*Author@Huoty

*Date@2015-11-2516:42:38

3

*Brief@

4*/

5

//判斷上傳的是不是圖片

6functionisimg($)

7{

$file=fopen($fileName,"rb");

8$bin=fread($file,2);//只詼2寧節(jié)

9

fclose($file);

10

$strinfo=@unpack("C2chars",$bin);

11

$typeCode=intval($strinfo['charsl'].$strinfo['chars2']);

12

$fileType='';

13

14

if($typeCode==255216/*jpg*/11$typeCode==7173/*gif*/11$typeCode==13

15

780/*png*/)

{

16

return$typeCode;

17}

else

18

{

IIecho'"僅允許上傳jpgljpeglgiflpng格式的圖片!

19

returnfalse;

20}

}

21

22222222345678

if(.lsIrngr,1J,.pg,,、丿、丿

、.

{}

”是不圖片

echoo,.,

e1se

{}?

是圖片

eh“,,·

cJ

>

29

30

31

32

33

34

35

36

37

38

方法三

最后一種方法是利用exif_imagetype函數(shù),該函數(shù)用于判斷一個(gè)圖像的類型,

采用這種方法更加簡(jiǎn)單。讀取—個(gè)圖像的第—個(gè)字節(jié)并檢查其簽名。如果發(fā)現(xiàn)

了t合當(dāng)?shù)暮灻麆t返回—個(gè)對(duì)應(yīng)的常量,否則返回FALSE。返回值和

getimagesize()返回的數(shù)組中的索引2的值是—樣的,但該函數(shù)要快得多。

該函數(shù)的返回值常噩定義如下:

1IMAGETYPE—GIF

2IMAGETYPE_JPEG

3IMAGETYPEPNG

2-

4IMAGETYPE_SWF

5IMAGETYPE_PSD

3

6IMAGETYPEBMP

7IMAGETYPE_TIFF_II(Intel字節(jié)順序)

4

8IMAGETYPE_TIFF_MM(Motorola字節(jié)順序)

9IMAGETYPEJPC

5-

10IMAGETYPE_JP2

11IMAGETYPEJPX

6-

12IMAGETYPEJB2

13IMAGETYPESWC

7-

14IMAGETYPE_IFF

15IMAGETYPEWBMP

8-

16IMAGETYPE_XBM

9

10

11

12

13

14

15

16

<?php#Script--isimg3.php

1

2

/*Author@Huoty

*Date@2015-11-2516:53:04

3

*Brief@

4*/

5

$mimetype=exif_imagetype("1.jpg");

6

if($mimetype==IMAGETYPE_GIF11$mimetype==IMAGETYPE_JPEG11$mimetype==I

7

MAGETYPE_PNG

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論