PHP에서는 GD 라이브러리를 사용하여 썸네일 생성을 포함하여 이미지를 처리 할 수 있습니다. imagecolorallocatealpha 기능을 통해 투명한 색상을 투명한 이미지에 할당하는 데 도움이됩니다. 다음 으로이 기능을 사용하여 투명한 이미지에 대한 축소판을 만드는 방법을 단계별로 단계별로 진행할 것입니다.
먼저 PHP 환경에서 GD 라이브러리가 활성화되어 있는지 확인하십시오. GD 라이브러리가 활성화되어 있는지 확인할 수 있습니다.
php -m | grep gd
GD 라이브러리가 설치되지 않은 경우 적절한 명령으로 설치하십시오 (예 : Ubuntu에서 sudo apt-get install php-gd를 사용).
투명한 이미지의 썸네일을 만들려면 먼저 원본 이미지를로드해야합니다. 투명한 배경이있는 PNG 또는 GIF 파일을 다루고 있다고 가정하면 imageCreateFrommpng 또는 imageCreateFromGif를 사용하여 이미지를로드 할 수 있습니다.
$image = imagecreatefrompng('example.png');
이렇게하면 현재 디렉토리에있는 example.png 파일이로드됩니다.
축소판을 생성하려면 새로운 이미지 캔버스를 만들고 투명한 배경을 가지고 있는지 확인해야합니다. 투명성을 보장하려면 먼저 올바른 투명 배경을 설정하고 imagecolorallocatealpha를 사용하여 투명한 색상을 할당해야합니다.
// 원본 이미지의 너비와 높이를 얻으십시오
$width = imagesx($image);
$height = imagesy($image);
// 축소판의 너비와 높이를 설정하십시오
$new_width = 100;
$new_height = 100;
// 새 이미지 캔버스를 만듭니다,투명한 배경으로 설정합니다
$thumb = imagecreatetruecolor($new_width, $new_height);
// 투명한 배경에 색상을 할당합니다
$transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127); // 0, 0, 0 검은 색입니다,127 완전한 투명성을 나타냅니다
imagefill($thumb, 0, 0, $transparent);
// 이미지 투명성을 활성화합니다
imagesavealpha($thumb, true);
이 코드에서, imagecolorallocatealpha ($ thumb, 0, 0, 0, 127)는 투명 배경색을 축소판에 할당하는 데 사용되며, 여기서 127은 완전한 투명성을 나타냅니다.
다음으로 imageCopyResAmpled 함수를 사용하여 원본 이미지를 새 캔버스로 확장합니다.
// 원본 이미지를 축소판 캔버스로 스케일링하고 복사하십시오.
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
축소판이 생성되면 파일에 저장하거나 브라우저에 직접 출력하도록 선택할 수 있습니다.
// 썸네일을 파일로 저장하십시오
imagepng($thumb, 'thumb_example.png');
// 또는 브라우저에 직접 출력
header('Content-Type: image/png');
imagepng($thumb);
// 기억을 청소하십시오
imagedestroy($image);
imagedestroy($thumb);
다음은 완전한 코드 예입니다.
<?php
// 원본 이미지를로드하십시오
$image = imagecreatefrompng('example.png');
// 원본 이미지의 너비와 높이를 얻으십시오
$width = imagesx($image);
$height = imagesy($image);
// 축소판의 너비와 높이를 설정하십시오
$new_width = 100;
$new_height = 100;
// 새 이미지 캔버스를 만듭니다,투명한 배경으로 설정합니다
$thumb = imagecreatetruecolor($new_width, $new_height);
// 투명한 배경에 색상을 할당합니다
$transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127); // 0, 0, 0 검은 색입니다,127 완전한 투명성을 나타냅니다
imagefill($thumb, 0, 0, $transparent);
// 이미지 투명성을 활성화합니다
imagesavealpha($thumb, true);
// 원본 이미지를 축소판 캔버스로 스케일링하고 복사하십시오.
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// 썸네일을 파일로 저장하십시오
imagepng($thumb, 'thumb_example.png');
// 또는 브라우저에 직접 출력
// header('Content-Type: image/png');
// imagepng($thumb);
// 기억을 청소하십시오
imagedestroy($image);
imagedestroy($thumb);
?>