PHP에서 imagecreatefrompng()는 내장 함수로, PNG 파일 또는 URL을 기반으로 새 이미지를 생성할 때 사용합니다. 이 함수는 지정한 파일명으로부터 가져온 이미지를 나타내는 이미지 식별자(image identifier)를 반환하며, 이후 GD 라이브러리의 다양한 이미지 처리 함수와 함께 활용할 수 있습니다.
문법
resource imagecreatefrompng(string $filename)
매개변수
imagecreatefrompng()는 단 하나의 매개변수 $filename만 받습니다. 이 매개변수에는 이미지 파일의 이름 또는 PNG 이미지가 위치한 경로(로컬 경로 또는 URL)를 지정합니다.
반환 값
함수가 성공적으로 실행되면 이미지 리소스 식별자를 반환하고, 실패하면 false를 반환하며 오류 메시지를 출력합니다.
예제 1 – 불러온 PNG 이미지를 브라우저에 표시하기
<?php
// 로컬 드라이브/파일에서 이미지 불러오기
$img = imagecreatefrompng('C:\xampp\htdocs\Images\img29.png');
// 불러온 PNG 이미지를 브라우저에 출력
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
?>
출력 결과

위 예제에서는 imagecreatefrompng()로 로컬 경로의 PNG 이미지를 불러온 뒤, header()로 콘텐츠 타입을 image/png로 지정하고 imagepng()를 호출해 브라우저에 이미지를 그대로 출력합니다. 마지막에는 imagedestroy()를 사용해 메모리에 할당된 이미지 리소스를 해제합니다.
예제 2 – PNG 이미지를 불러와 다른 형식으로 저장하기
<?php
// 로컬 드라이브/파일에서 이미지 불러오기
$img = imagecreatefrompng('C:\xampp\htdocs\Images\img29.png');
// 이미지 좌우 반전 (필요한 경우 주석 해제)
// imageflip($img, IMG_FLIP_HORIZONTAL);
// 불러온 이미지를 JPEG로 변환해 지정한 로컬 경로에 저장
imagejpeg($img, 'C:\xampp\htdocs\pic.jpg');
imagedestroy($img);
?>
출력 결과

설명 – 예제 2에서는 imagecreatefrompng() 함수로 로컬 경로의 PNG 이미지를 불러온 후, imagejpeg() 함수를 사용해 해당 이미지를 JPEG 형식으로 변환하여 지정한 로컬 드라이브 경로에 저장했습니다. 두 번째 인수에 저장할 파일의 전체 경로를 전달하면 브라우저에 출력하지 않고 파일로 바로 저장할 수 있습니다.
참고 사항
URL을 통해 원격 서버의 PNG 이미지를 불러오려면 php.ini 설정에서 allow_url_fopen 옵션이 활성화되어 있어야 하며, 다음과 같이 작성할 수 있습니다.
$img = imagecreatefrompng('https://example.com/images/sample.png');
또한 예제 1처럼 이미지를 브라우저에 직접 표시할 수도 있고, 예제 2처럼 다른 형식으로 변환해 저장할 수도 있습니다. 필요에 따라 imageflip(), imagescale() 등의 함수를 조합하면 불러온 이미지에 다양한 편집 작업을 적용할 수 있습니다.