url이 이미지인지 확인하는 멋진 PHP 함수를 발견했습니다. 이미지가 있는지 여부를 판단하는 방법도 있습니다. > 1MB?url의 이미지 크기를 확인하십시오
해결책을 찾을 수 :
내가 여기 실행 가능한 해결책을 발견 : php how to get web image size in kb?url이 이미지인지 확인하는 멋진 PHP 함수를 발견했습니다. 이미지가 있는지 여부를 판단하는 방법도 있습니다. > 1MB?url의 이미지 크기를 확인하십시오
해결책을 찾을 수 :
내가 여기 실행 가능한 해결책을 발견 : php how to get web image size in kb?에서 : https://stackoverflow.com/a/3894706/187954
<?php
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg');
$size = null;
foreach($headers as $h){
/** look for Content-Length, and stick it in $size **/
}
if ($size === null){ //we didn't get a Content-Length header
/** Grab file to local disk and use filesize() to set $size **/
}
echo "image is $size bytes";
감사합니다! 1MB (즉, 1024 * 1024)이면 $ size가 1048576의 값을 가질 것이라고 생각하십니까? – weltschmerz
오, 방금 $ 크기가 이미지의 높이와 너비가 아닌 바이트의 크기가 아닌 배열임을 알았습니다. 아무도 그걸 어떻게 알아? – weltschmerz
@ 데니스 나는 거의 같은 시간에 눈치 챘다 : 다른 답변에 대한 참조로 내 대답을 업데이트했습니다 –
내가이 게시물을 참조 것, 나는 그것이 귀하의 질문에 대답 것이라 생각합니다. Easiest way to grab filesize of remote file in PHP?
내가 아는 두 가지 접근 방식이 있습니다. 하나는 CURL을 사용하고 헤더 만 가져오고 (더 효율적이고 신뢰성은 떨어짐) file_get_contents (more reliable, less efficient)
입니다.
CURL을 사용하면 파일 크기 인 CONTENT_LENGTH
헤더 만 얻을 수 있습니다. 그러면 거기에서 간단한 수학을 통해 1MB가 넘는 지 확인할 수 있습니다. 문제는 원격 서버가 해당 기능을 지원하지 않을 수 있다는 것입니다.
strlen(file_get_contents("YOUR URL"))
을 사용하면 파일에서 전체 byes를 얻을 수 있지만 스크립트는 파일을 먼저 다운로드해야하므로 이미지가 큰 경우 문제가됩니다.
파일 형식을 확인하려면 substr을 사용하여 파일 확장자를 확인할 수 있습니다. 이 같은
뭔가 작동하지만 자신의 문제
$ext = substr($URL, -3, 3);
if($ext == 'jpg' || $ext == 'gif') {
//is image
}else{
//not image
}
마이클의 접근 방식이 내 것보다 낫습니다 –
감사합니다! 나는 더 깨끗한 해결책을 찾았다 고 생각한다. 질문 편집을 참조하십시오. – weltschmerz
을 다운로드을 가지고 있으며 크기를 확인할 수 있습니다. – Asaph