PHP가 파일이 이미지인지 판단하는 방법: 1. getimagesize 함수를 사용하여 이미지 정보를 얻은 다음 판단합니다. 2. 이미지의 처음 2바이트를 읽은 다음 판단합니다. 판단할 EXIF_imagetype 함수입니다.
추천: "php 비디오 튜토리얼"
How to use PHP to 알아내기 a file is an image
최근 직장에서 파일이 이미지인지 알아내야 하는 필요성을 느꼈습니다. 이 기능을 통해 관련 정보를 검색하고 getimagesize 함수를 사용하여 이미지 정보를 얻은 다음 이미지의 처음 2바이트를 판단하거나 읽는 등 여러 가지 방법을 찾았습니다.
머리말
웹 디자인에서는 사진이 필요한 경우 일반적으로 이미지의 파일 이름을 얻습니다. 파일명만으로는 이미지 파일인지 알 수 없습니다. 어떤 사람들은 접미사 이름으로 판단할 수 있다고 생각할 수도 있습니다. 파일 접미사 이름은 마음대로 변경될 수 있다는 점을 잊지 마십시오. 게다가 Linux 시스템에서는 파일 형식이 접미사로 구분되지 않습니다. 접미사 이름으로 사진을 구분할 수 있다고 순진하게 생각한다면 오류가 발생했을 때 오류가 어디에 있는지조차 알 수 없을 수도 있습니다. 예를 들어 귀찮은 사람이 텍스트 파일을 background.jpg로 바꿔서 사용하라고 주면 단순히 이미지가 손상됐다고 생각할 수도 있지만 단순한 텍스트 파일이라고는 생각하지 마세요.
불필요한 문제가 발생하지 않도록 사진을 받았을 때 정말 사진파일인지 정확하게 판단해야 합니다. 여기에 세 가지 판단 방법이 요약되어 있습니다. 도움이 필요한 친구들이 함께 살펴볼 수 있습니다.
방법 1
getimagesize 함수를 사용하여 이미지 정보를 얻은 후 판단:
<?php # Script -- isimg.php /* Author @ Huoty * Date @ 2015-11-24 16:59:26 * Brief @ */ function isImage($filename) { $types = '.gif|.jpeg|.png|.bmp'; //定义检查的图片类型 if(file_exists($filename)) { if (($info = @getimagesize($filename)) return 0; $ext = image_type_to_extension($info['2']); return stripos($types,$ext); } else { return false; } } if(isImage('isimg.txt')!==false) { echo isImage('1.jpg'); echo '是图片'; } else { echo '不是图片'; } ?>
방법 2
사진의 처음 2바이트를 읽고 사진인지 판단:
<?php # Script -- isimg2.php /* Author @ Huoty * Date @ 2015-11-25 16:42:38 * Brief @ */ //判断上传的是不是图片 function isImg($fileName) { $file = fopen($fileName, "rb"); $bin = fread($file, 2); // 只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) { return $typeCode; } else { // echo '"仅允许上传jpg/jpeg/gif/png格式的图片!'; return false; } } if (isImg("1.jpg")) { echo "是图片"; } else { echo "不是图片"; } ?>
방법 3
마지막 방법은 이미지 유형을 결정하는 데 사용되는 EXIF_imagetype 함수를 사용하는 것입니다. 이미지의 첫 번째 바이트를 읽고 서명을 확인합니다. 적합한 서명이 발견되면 해당 상수를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 반환 값은 getimagesize()에서 반환된 배열의 인덱스 2와 동일하지만 이 함수가 훨씬 빠릅니다.
이 함수의 반환 값 상수는 다음과 같이 정의됩니다.
1 IMAGETYPE_GIF 2 IMAGETYPE_JPEG 3 IMAGETYPE_PNG 4 IMAGETYPE_SWF 5 IMAGETYPE_PSD 6 IMAGETYPE_BMP 7 IMAGETYPE_TIFF_II(Intel 字节顺序) 8 IMAGETYPE_TIFF_MM(Motorola 字节顺序) 9 IMAGETYPE_JPC 10 IMAGETYPE_JP2 11 IMAGETYPE_JPX 12 IMAGETYPE_JB2 13 IMAGETYPE_SWC 14 IMAGETYPE_IFF 15 IMAGETYPE_WBMP 16 IMAGETYPE_XBM
예:
<?php # Script -- isimg3.php /* Author @ Huoty * Date @ 2015-11-25 16:53:04 * Brief @ */ $mimetype = exif_imagetype("1.jpg"); if ($mimetype == IMAGETYPE_GIF || $mimetype == IMAGETYPE_JPEG || $mimetype == IMAGETYPE_PNG || $mimetype == IMAGETYPE_BMP) { echo "是图片"; } ?>
위 내용은 PHP에서 파일이 이미지인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!