찾다
백엔드 개발PHP 문제PHP에서 파일이 이미지인지 확인하는 방법

PHP가 파일이 이미지인지 판단하는 방법: 1. getimagesize 함수를 사용하여 이미지 정보를 얻은 다음 판단합니다. 2. 이미지의 처음 2바이트를 읽은 다음 판단합니다. 판단할 EXIF_imagetype 함수입니다.

PHP에서 파일이 이미지인지 확인하는 방법

추천: "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 = &#39;.gif|.jpeg|.png|.bmp&#39;; //定义检查的图片类型
 if(file_exists($filename))
 {
  if (($info = @getimagesize($filename))
   return 0;
   
  $ext = image_type_to_extension($info[&#39;2&#39;]);
  return stripos($types,$ext);
 }
 else
 {
  return false;
 }
}
  
if(isImage(&#39;isimg.txt&#39;)!==false)
{
 echo isImage(&#39;1.jpg&#39;);
 echo &#39;是图片&#39;;
}
else
{
 echo &#39;不是图片&#39;;
}
?>

방법 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[&#39;chars1&#39;].$strInfo[&#39;chars2&#39;]); 
 $fileType = &#39;&#39;; 
 
 if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) 
 { 
  return $typeCode; 
 }
 else
 { 
  // echo &#39;"仅允许上传jpg/jpeg/gif/png格式的图片!&#39;; 
  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)