PHP GD generated image Firefox에 오류가 있기 때문에 이미지를 표시 할 수 없습니다.

PHP GD generated image Firefox에 오류가 있기 때문에 이미지를 표시 할 수 없습니다. [한국어]

PHP를 사용하여 이미지를 생성 할 때 (예 : 서버 저장 그림에 워터 마크를 추가하거나 아래 코드를 사용하거나 PNG 대신 JPEG로 비슷한 이미지를 생성하는 경우 이미지가 전혀 생성되지 않고 Firefox에서 직접 볼 수 있지만 오류는 발생하지 않음) Chrome에서.

이러한 종류의 코드는 일부 서버에서 작업하고 있음에도 불구하고 이제는 다른 이유로 작동 할 수 있습니다. 필자의 경우에는 로컬에서 완벽하게 작동하지만 인터넷 서버에서 오류 아래에 생성 되었기 때문에 오류가 있기 때문에 이미지를 표시 할 수 없습니다.

문제는 여러 가지 이유에서 발생할 수 있습니다. 그 중 일부는 다음과 같습니다.

이미 출력이 이미 설정되었습니다.

이미지 생성으로 인한 진정한 오류.

잘못된 이미지 유형이 사용됩니다.

이미지 라이브러리가 설치되지 않았습니다.

$stamp = imagecreatefrompng('watermark.png');
if(!$im = imagecreatefrompng('image.png')) die('Error generating image');
$marge_right = $marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$copyimage = imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
if(!imagedestroy($im)) die('Error generating image');
if(!imagedestroy($stamp)) die('Error generating image');

이전에 출력이 이미 설정되었습니다.

고의적으로는 아니지만, 예를 들어 다른 이전 스크립트에 끝에 공백이 포함 된 경우가 있습니다.이 오류를 방지하려면 PHP에서 권장하는대로 PHP 끝 태그로 스크립트를 닫지 마십시오.>

그런 다음 헤더 함수를 사용하기 전에 다음 코드를 사용하여 이전에 설정된 헤더를 버려야합니다

foreach (getallheaders() as $name => $value) {
header_remove($name);
}

또한이 함수는 헤더와 이미지 앞에 출력이 생성되지 않았는지 확인합니다.

ob_end_clean();

이 경우 문제가 해결되어 이미지가 올바르게 다시 표시되었습니다.

이미지 생성으로 인한 진정한 오류

이미지 생성 중에 실제 오류가 발생하는 경우 PHP가 가능한 모든 종류의 오류를 표시하도록 설정하고 해당 로그를 확인하여 오류를 추적하고 해결할 수있게하십시오.

다음 코드는 PHP가 로그의 모든 오류를보고하게합니다 :

error_reporting(E_ALL);
ini_set('display_errors', '1');

그런 다음 서버 구성으로 인해 출력 HTML에 나타나지 않더라도 일부 오류가보고되었음을 알 수 있습니다.

잘못된 이미지 유형이 사용되었습니다.

사용하는 이미지 유형이 올바른지 확인하십시오 (예 :이 코드를 사용하여 png와 jpeg를 구별하십시오).

또한 사용 된 이미지 생성 함수에 따라 사용 된 출력에 따라 헤더가 올바른지 확인하십시오

//to generate png image
header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
//to generate jpeg image
header('Content-type: image/jpeg');
if(!imagejpeg($im)) die('Error generating image');

이미지 라이브러리가 설치되지 않았습니다.

이미지 라이브러리가 설치되었는지 확인하십시오. 이렇게하려면 phpinfo () 함수를 실행하십시오. 스크립트에서 PHP GD와 관련된 다음 값을 확인하십시오. imagepng () 같은 함수에서 사용하는 그래픽 라이브러리.

패키지가 누락 된 경우 해결 방법은 PEAR 명령을 사용하여 패키지를 추가하거나 패키지 설치를 위해 솔루션에 내장 된 웹 호스트를 사용하여 로컬 구성에 따라 다릅니다.

imagejpeg 또는 imagepng가 작동하지 않을 때 수행 할 작업

NotePad ++에서 imagepng 함수를 호출하는 PHP 파일을 열고 Encoding> BOM없이 UTF-8로 변환 메뉴로 이동 한 후 저장하십시오.

Dreamweaver에서 페이지 속성> 제목 / 인코딩으로 이동하고 유니 코드 서명 포함 (BOM)을 선택 해제합니다.

PHP imagejpeg 또는 imagepng가 작동하지 않는 경우 PHP 파일이 BOM, BOM (Bill Of Material)으로 인코딩 되었기 때문에 추가 정보가 이미지 데이터 앞에 이미지와 함께 전송되기 때문에 가능성이 큽니다.

PHP imagejpeg 및 PHP imagepng 함수는 서버 응답에서 직접 그림 코드를 보내는 데 사용되는 함수입니다.

PHP - imagepng가 제대로 작동하지 않습니다.
PHP - imagepng 함수
PHP - imagejpeg 함수

비슷한 기사

코멘트 (6)

Irvin Vasquez, 2018-08-19
Simple, clear and well explained, many thanks
Joyce Lawrence, 2018-08-19
ありがとう、非常に有益な
Catherine Roberts, 2018-08-19
Dokładnie tego, czego szukałem, idealnie
Headlinext, 2018-08-19
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
Marshel, 2018-08-19
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
porcateraC, 2018-08-19
بالضبط ما كنت أبحث عنه ، مثالي

코멘트를 남겨주세요

Ezoic으로 광고 수익을 50-250 % 증가시킵니다. Google 공인 출판 파트너.
Ezoic으로 광고 수익을 50-250 % 증가시킵니다. Google 공인 출판 파트너.
 
Ezoic으로 광고 수익을 50-250 % 증가시킵니다. Google 공인 출판 파트너.
Ezoic으로 광고 수익을 50-250 % 증가시킵니다. Google 공인 출판 파트너.