이미지 처리 및 GD getimagesize

(PHP 4, PHP 5, PHP 7, PHP 8)

getimagesize — 이미지 크기 가져오기


설명

getimagesize(string $filename, array &$image_info = null): array|false

getimagesize() 함수는 지원되는 이미지 파일의 크기를 결정하고 일반 HTML IMG 태그 및 해당 HTTP 콘텐츠 유형 내에서 사용할 파일 유형 및 height/width 텍스트 문자열과 함께 크기를 반환합니다.

getimagesize()image_info 매개변수에서 더 많은 정보를 반환할 수도 있습니다.

주의 이 함수는 filename이 유효한 이미지 파일일 것으로 예상합니다. 이미지가 아닌 파일이 제공되면 이미지로 잘못 감지되어 함수가 성공적으로 반환되지만 배열에 의미 없는 값이 포함될 수 있습니다.

주어진 파일이 유효한 이미지인지 확인하기 위해 getimagesize()를 사용하지 마십시오. 대신 Fileinfo 확장과 같은 전용 솔루션을 사용하십시오.

참고: JPC와 JP2는 비트 깊이가 다른 구성 요소를 가질 수 있습니다. 이 경우 "bits"에 대한 값은 가장 높은 비트 깊이가 발생합니다. 또한 JP2 파일에는 multiple JPEG 2000 codestreams이 포함될 수 있습니다. 이 경우 getimagesize()는 파일의 루트에서 만나는 첫 번째 코드스트림의 값을 반환합니다.

참고: 아이콘에 대한 정보는 비트 전송률이 가장 높은 아이콘에서 검색됩니다.

참고: GIF 이미지는 하나 이상의 프레임으로 구성되며 각 프레임은 이미지의 일부만 차지할 수 있습니다. getimagesize()에 의해 보고되는 이미지의 크기는 전체 크기입니다(논리적 화면 설명자에서 읽음).


매개변수

filename
이 매개변수는 정보를 검색하려는 파일을 지정합니다. supported streams 중 하나를 사용하여 로컬 파일 또는 (구성이 허용하는) 원격 파일을 참조할 수 있습니다.
image_info
이 선택적 매개변수를 사용하면 이미지 파일에서 일부 확장 정보를 추출할 수 있습니다. 현재 이것은 다른 JPG APP 마커를 연관 배열로 반환합니다. 일부 프로그램은 이러한 APP 마커를 사용하여 이미지에 텍스트 정보를 포함합니다. 매우 일반적인 방법은 » IPTC 정보를 APP13 마커에 삽입하는 것입니다. iptcparse() 함수를 사용하여 바이너리 APP13 마커를 읽을 수 있는 것으로 구문 분석할 수 있습니다.

메모: image_infoJFIF 파일만 지원합니다.


반환 값

최대 7개의 요소가 있는 배열을 반환합니다. 모든 이미지 유형에 channelsbits 요소가 포함되는 것은 아닙니다.

인덱스 0과 1은 각각 이미지의 너비와 높이를 포함합니다.

메모: 일부 형식에는 이미지가 포함되지 않거나 여러 이미지가 포함될 수 있습니다. 이러한 경우 getimagesize()가 이미지 크기를 적절하게 결정하지 못할 수 있습니다. 이러한 경우 getimagesize()는 너비와 높이에 대해 0을 반환합니다.

인덱스 2는 이미지 유형을 나타내는 IMAGETYPE_XXX 상수 중 하나입니다.

인덱스 3은 IMG 태그에서 직접 사용할 수 있는 올바른 height="yyy" width="xxx" 문자열이 있는 텍스트 문자열입니다.

mime은 이미지의 해당 MIME 유형입니다. 이 정보는 올바른 HTTP Content-type 헤더가 있는 이미지를 전달하는 데 사용할 수 있습니다.

예제 #1 getimagesize() 및 MIME 유형

                  
<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
    header("Content-type: {$size['mime']}");
    fpassthru($fp);
    exit;
} else {
    // error
}
?>
                  
                

channels은 RGB 사진의 경우 3이고 CMYK 사진의 경우 4입니다.

bits는 각 색상의 비트 수입니다.

일부 이미지 유형의 경우 channelsbits 값의 존재가 약간 혼란스러울 수 있습니다. 예를 들어 GIF는 항상 픽셀당 3개의 채널을 사용하지만 전체 색상표가 있는 애니메이션 GIF의 경우 픽셀당 비트 수를 계산할 수 없습니다.

실패하면 false가 반환됩니다.


오류/예외

filename 이미지에 액세스할 수 없는 경우 getimagesize()E_WARNING 수준의 오류를 생성합니다. 읽기 오류 시 strong>getimagesize()는 E_NOTICE 수준의 오류를 생성합니다.


변경 로그

버전 설명
7.1.0 WebP 지원이 추가되었습니다.

Examples

예제 #2 getimagesize() 예제

                  
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>
                  
                

예제 #3 getimagesize (URL)

                  
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");

// if the file name has space in it, encode it properly
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>
                  
                

예제 #4 getimagesize() returning IPTC

                  
<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
    $iptc = iptcparse($info["APP13"]);
    var_dump($iptc);
}
?>
                  
                

메모

메모: 이 함수는 GD 이미지 라이브러리가 필요하지 않습니다.


기타