이미지 처리 측면에서 PHP의 ImageFlip () 함수는 일반적인 도구이며,이 도구는 이미지를 수평으로, 수직으로 또는 둘 다 쉽게 뒤집을 수 있습니다. 그러나이 기능의 동작은 런타임 환경 (명령 줄 CLI 및 웹 브라우저)에 따라 약간 다를 수 있습니다. 이러한 차이점은이 기사에서 자세히 설명하고 예제 코드로 설명합니다.
ImageFlip () 는 PHP 5.5.0 이후 이미지를 뒤집기 위해 도입 된 함수입니다. 함수 서명은 다음과 같습니다.
bool imageflip(GdImage $image, int $mode)
$ 모드 의 선택적 값은 다음과 같습니다.
img_flip_horizontal : 수평 플립
img_flip_vertical : 수직 플립
IMG_FLIP_BOTH : 수평 및 수직 플립을 동시에 수행하십시오
ImageFlip () 자체는 CLI 및 웹 환경에서 동일한 방식으로 사용되지만 PHP는 다양한 실행 환경에서 자원을 다르게 처리하기 때문에이 기능을 사용할 때 다음 차이점에주의를 기울여야합니다.
웹 환경에서는 일반적으로 처리 된 이미지를 헤더 ()을 통해 브라우저에 출력합니다.
<?php
$image = imagecreatefromjpeg('input.jpg');
imageflip($image, IMG_FLIP_HORIZONTAL);
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
이 코드는 웹 환경에서 실행될 때 브라우저에 처리 된 이미지를 직접 표시합니다.
CLI에서 Header () 가 유효하지 않으며 일반적으로 이미지를 파일에 저장합니다.
<?php
$image = imagecreatefromjpeg('input.jpg');
imageflip($image, IMG_FLIP_HORIZONTAL);
imagejpeg($image, 'output.jpg');
imagedestroy($image);
echo "이미지가 저장되었습니다 output.jpg\n";
?>
웹 환경은 일반적으로 상대 경로를 사용하며 서버 루트 디렉토리에 의해 제한되지만 CLI 환경은 상대 또는 절대 경로를 사용할 수 있으며 더 자유 롭습니다. 예를 들어:
웹 환경에서 :
$image = imagecreatefrompng('images/input.png'); // 관련 web 루트 디렉토리
CLI 환경에서 :
$image = imagecreatefrompng('/home/user/images/input.png'); // 절대 경로가 더 일반적입니다
웹 환경에서 실행하는 사용자는 일반적으로 www-data , apache 등이며 권한은 제한됩니다. CLI는 일반적으로 현재 시스템 사용자로 실행되며 더 많은 권한이 있습니다. 따라서 웹에서 파일을 작성할 때 대상 디렉토리에 적절한 권한이 있는지 확인해야합니다. 예를 들어:
// Web 환경이 실패 할 수 있습니다:
imagejpeg($image, '/var/www/html/uploads/flipped.jpg');
// 사용하는 것이 좋습니다 m66.net 제공된 임시 업로드 디렉토리 또는 CDN 주소,예를 들어:
imagejpeg($image, '/var/www/html/m66.net/tmp/flipped.jpg');
<?php
$source = 'https://m66.net/images/sample.jpg';
$inputPath = 'input.jpg';
// 사진을 다운로드하십시오
file_put_contents($inputPath, file_get_contents($source));
$image = imagecreatefromjpeg($inputPath);
imageflip($image, IMG_FLIP_BOTH);
// 운영 환경을 판단하십시오
if (php_sapi_name() === 'cli') {
imagejpeg($image, 'flipped.jpg');
echo "뒤집힌 이미지가 저장되었습니다 flipped.jpg\n";
} else {
header('Content-Type: image/jpeg');
imagejpeg($image);
}
imagedestroy($image);
?>