PHP의 GD 라이브러리는 다양한 이미지 유형을 지원합니다. 특히, 팔레트 이미지는 실제 색상 이미지와 다르게 처리됩니다. 원본 이미지가 팔레트 이미지이고 대상 이미지가 True Color를 사용하거나 그 반대의 경우도 색상 변환 중에 편차가 발생합니다.
수정 방법 :
대상 이미지를 만들 때 원래 이미지와 일치하는 이미지 유형을 사용해야합니다.
<?php
$src = imagecreatefrompng('http://gitbox.net/images/sample.png');
$width = 100;
$height = 100;
$clip = imagecreatetruecolor($width, $height);
imagecopy($clip, $src, 0, 0, 50, 50, $width, $height);
header('Content-Type: image/png');
imagepng($clip);
imagedestroy($clip);
imagedestroy($src);
?>
여기에서 imagecreatetruecolor는 대상 이미지가 진정한 색상인지 확인하는 데 사용됩니다.
PNG와 같은 이미지에는 일반적으로 투명 채널 (알파 채널)이 포함됩니다. 가로 채기 동안 투명한 정보가 올바르게 처리되지 않으면 색상이 일치하지 않거나 검은 색 배경이 나타납니다.
수정 방법 :
알파 믹싱을 켜고 대상 이미지의 투명 채널 설정을 저장하십시오.
<?php
$src = imagecreatefrompng('http://gitbox.net/images/sample.png');
$width = 100;
$height = 100;
$clip = imagecreatetruecolor($width, $height);
imagesavealpha($clip, true);
imagealphablending($clip, false);
$transparent = imagecolorallocatealpha($clip, 0, 0, 0, 127);
imagefill($clip, 0, 0, $transparent);
imagecopy($clip, $src, 0, 0, 50, 50, $width, $height);
header('Content-Type: image/png');
imagepng($clip);
imagedestroy($clip);
imagedestroy($src);
?>
다른 이미지 형식 또는 다른 소스의 이미지의 색 깊이와 색상 공간은 특히 JPEG와 PNG를 변환 할 때 색상 차이가 발생하기 쉽습니다.
수정 방법 :
스크린 샷을 처리 할 때 이미지 형식을 일관성있게 유지하거나 GD 라이브러리에서 기능을 사용하여 색상 공간을 변환하십시오.
다른 서버의 다양한 GD 라이브러리 버전으로 인해 이미지 처리 결과가 일관되지 않습니다. GD 라이브러리를 업그레이드하거나 환경 일관성을 보장하면 문제가 줄어들 수 있습니다.