[PHP] webp 이미지를 jpg, png 로 변환
웹사이트에서 이미지 파일은 주로 jpg, png 포맷이다. 최근에 webp 라는 다소 생소한 이미지 파일이 사용되는데 webp 포맷은 구글에서 공개한 이미지 포맷이다. webp 포맷은 gif, jpg, png 포맷을 대체 가능하다는 것이 가장 큰 특징이다.
php에서는 5.4 버전 이상에서 webp를 사용할 수 있지만 getimagesize 등의 일부 함수는 php 7.1 버전에서 webp 포맷을 지원하기 때문에 php 7.1 이상의 환경에서 사용하는 게 좋을 것 같다. 7.1 버전 이하에서 webp 이미지의 썸네일 등을 생성하기 위해서는 jpg 또는 png 등으로 변환 후 처리하는 것이 한 가지 방법일 수 있다. 아래 코드는 webp 이미지를 jpg, png 이미지로 파일로 변환하는 기능을 한다.
<?php $webp = './154575.webp'; if (mime_content_type($webp) == 'image/webp') { $im = imagecreatefromwebp($webp); $w = imagesx($im); $h = imagesy($im); //imagealphablending($im, true); $dst = imagecreatetruecolor($w, $h); /* $bgColor = imagecolorallocatealpha($dst, 0, 0, 0, 127); imagefill($dst, 0, 0, $bgColor); imagealphablending($dst, false); imagesavealpha($dst, true); */ imagecopy($dst, $im, 0, 0, 0, 0, $w, $h); imagepng($dst, '154575.png'); imagejpeg($im, '154575.jpg'); imagedestroy($im); imagedestroy($dst); }
다만 위 코드를 php 7.0 환경에서 실행했을 때 일부 webp 이미지가 jpg, png 변환 후 색상이 변경되는 현상이 존재한다. php 7.2 환경에서는 동일하게 변경되는 것을 확인할 수 있는데 php 버전에 따른 버그로 보여진다. 하지만 많은 이미지에 대해 테스트를 진행한 것이 아니기 때문에 단정할 수는 없을 듯 하다.