> 백엔드 개발 > PHP 문제 > PHP를 사용하여 네트워크 이미지를 다운로드하면 표시되지 않습니다

PHP를 사용하여 네트워크 이미지를 다운로드하면 표시되지 않습니다

WBOY
풀어 주다: 2023-05-06 17:27:08
원래의
763명이 탐색했습니다.

인터넷 시대의 지속적인 발전과 함께 사진은 현대 생활에서 없어서는 안 될 요소가 되었습니다. 웹 사이트 개발에서 우리는 PHP를 사용하여 인터넷에서 이미지를 다운로드하고 페이지에 표시해야 하는 경우가 많습니다. 그러나 때로는 PHP를 사용하여 네트워크 이미지를 다운로드할 때 이미지가 표시되지 않는 상황이 발생할 수 있습니다. 이 기사에서는 이 문제를 논의하고 해결할 것입니다.

1. 네트워크 이미지를 다운로드하는 방법

PHP는 네트워크 이미지를 다운로드하는 다양한 방법을 제공합니다. 다음은 두 가지 방법입니다.

1. 컬 기능을 사용하여 이미지를 다운로드합니다.

curl은 파일 다운로드를 포함하여 다양한 네트워크 작업을 완료할 수 있는 다중 A 프로토콜을 지원합니다. 컬 기능을 사용하여 이미지를 다운로드하는 코드는 다음과 같습니다.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
로그인 후 복사

그 중 $url은 다운로드할 이미지의 링크 주소를 나타냅니다. 매개변수를 설정하려면 컬_setopt 함수를 사용하세요. 일반적으로 사용되는 매개변수는 다음과 같습니다.

  • CURLOPT_RETURNTRANSFER: 반환된 결과를 $data 변수에 저장하려면 1로 설정합니다.
  • CURLOPT_HEADER: 헤더 정보가 반환되지 않음을 나타내려면 0으로 설정합니다.
  • CURLOPT_FOLLOWLOCATION: 리디렉션을 지원하려면 1로 설정합니다.

이 코드는 파일 내용을 $data 변수에 저장합니다. 파일을 로컬에 저장하려면 file_put_contents 함수를 사용할 수 있습니다.

file_put_contents($path, $data);
로그인 후 복사

여기서 $path는 파일을 저장할 경로를 나타냅니다.

2. file_get_contents 함수를 사용하여 이미지를 다운로드하세요

curl 함수를 사용하는 것 외에도 PHP 내장 함수인 file_get_contents를 사용하여 이미지를 다운로드할 수도 있습니다. 컬 함수에 비해 file_get_contents 함수는 사용이 더 간단합니다.

$data = file_get_contents($url);
로그인 후 복사

이 코드는 지정된 URL의 내용을 $data 변수로 읽어옵니다. 로컬 파일에 저장하고 싶다면 file_put_contents 함수를 사용하면 되는데, 이는 컬 함수를 사용할 때와 동일하다.

2. 이미지가 표시되지 않는 이유와 해결 방법

PHP를 사용하여 네트워크 이미지를 다운로드하여 페이지에 표시할 때 이미지가 정상적으로 표시되지 않는 경우가 있습니다. 다음은 이 상황에 대한 가능한 원인과 해결 방법을 요약한 것입니다.

1. 사진 다운로드가 완료되지 않았습니다

네트워크 문제로 인해 다운로드한 사진이 완전히 다운로드되지 않아 제대로 표시되지 않는 경우가 있습니다. 로컬 파일 크기와 실제 파일 크기를 비교하여 다운로드가 완료되었는지 판단할 수 있습니다. 이 경우 올바른 이미지 형식이 표시되지 않습니다. PHP에 내장된 getimagesize 함수를 사용하여 이미지가 올바른지 확인할 수 있습니다.

$data = curl_exec($ch); // 使用 curl 函数下载文件
$content_length = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); // 获取文件大小
curl_close($ch);

if(strlen($data) != $content_length){ // 判断文件大小与下载大小是否一致
    exit("下载的文件不完整!");
}
로그인 후 복사

3. 이미지 경로가 잘못되었습니다

이미지 경로가 잘못되면 이미지가 제대로 표시되지 않습니다. 이때 파일명, 파일경로 등 이미지 경로가 올바른지 확인해야 합니다.

4. 브라우저 캐시 문제

가끔 이미지를 다운로드하여 로컬에 저장했는데도 브라우저에서 이미지가 정상적으로 표시되지 않는 경우가 있습니다. 캐싱 문제를 방지하려면 브라우저 캐시를 지우거나 이미지 링크 뒤에 임의 매개변수를 추가해 보세요.

if(@!getimagesize($path)){ // 判断图片是否正确
    unlink($path); // 删除下载的图片
    exit("下载的不是图片文件!");
}
로그인 후 복사

위 내용은 PHP를 사용하여 네트워크 이미지를 다운로드한 후 표시되지 않는 문제에 대한 해결 방법입니다. 모든 분들께 도움이 되기를 바랍니다.

위 내용은 PHP를 사용하여 네트워크 이미지를 다운로드하면 표시되지 않습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿