현재 위치: > 최신 기사 목록> ImageCrop 함수에서 이미지를 자르는 시점 좌표 및 폭 및 높이 설정에 대한 자세한 설명

ImageCrop 함수에서 이미지를 자르는 시점 좌표 및 폭 및 높이 설정에 대한 자세한 설명

gitbox 2025-05-29

PHP에서는 이미지 처리 작업의 매우 일반적인 부분입니다. PHP 5.5.0 이후, PHP는 이미지의 일부를 자르기위한 내장 ImageCrop 함수를 가지고 있으며, 이는 이전 복잡한 수동 자르기보다 더 간결하고 사용하는 데 사용됩니다.

이 기사는 ImageCrop 함수를 올바르게 사용하는 방법, 특히 자르기 중에 전달되는 좌표 및 너비 및 높이 매개 변수를 설정하여 일반적인 오류 및 트랩을 피하는 방법을 자세히 소개합니다.


1. ImageCrop 함수 소개

ImageCrop 함수의 프로토 타입은 다음과 같습니다.

 imagecrop(GdImage $image, array $rect): ?GdImage
  • $ 이미지 : 자르는 이미지 리소스.

  • $ rect : 클리핑 영역의 좌표와 치수를 정의하는 연관 배열은 다음 키를 포함해야합니다.

    • X : 작물 영역의 왼쪽 상단 모서리의 수평 좌표 (픽셀, 정수).

    • Y : 작물 영역의 왼쪽 상단 모서리의 수직 좌표 (픽셀, 정수).

    • 너비 : 작물 면적의 너비 (픽셀).

    • 높이 : 작물 면적의 높이 (픽셀).

함수가 성공하면 자른 새 이미지 자원을 반환하고 실패하면 False를 반환합니다.


2. 좌표 및 너비 및 높이 매개 변수의 특정 의미

  1. 좌표 (x, y)
    원래 그림에서 작물 상자의 왼쪽 상단 모서리의 위치를 ​​나타냅니다. 좌표는 원점 (0,0)으로 왼쪽 상단 코너에서, x 축은 오른쪽으로 자라며 y 축은 아래쪽으로 자랍니다.

  2. 너비와 높이
    픽셀로 작물 상자의 크기를 나타냅니다. 긍정적 인 정수 여야하며 원본 이미지의 나머지 사용 가능한 영역을 초과 할 수 없습니다.


3. 매개 변수를 올바르게 설정하는 방법은 무엇입니까?

  1. 좌표와 크기가 원본 이미지의 경계를 초과하지 않도록하십시오 <br> 예를 들어, 원본 이미지 너비가 $ imgwidth 이고 높이가 $ imgheight 인 경우 다음과 같이 만족해야합니다.

     $x >= 0 && $y >= 0
    $x + $width <= $imgWidth
    $y + $height <= $imgHeight
    

    그렇지 않으면 자르기 작업이 실패하고 거짓을 반환합니다.

  2. 매개 변수 유형은 정수 <br> 여야합니다 integer가 아닌 인수는 오류 또는 예외를 유발할 수 있습니다.

  3. 작물 면적의 너비와 높이가 0보다 큰지 확인하십시오.
    너비 또는 높이가 0 이상이면 자르기가 유효하지 않습니다.


4. 샘플 코드

image example.jpg , 코디네이트 (50, 30), 폭이 200 픽셀, 높이 150 픽셀에서 시작한다고 가정 해 봅시다.

 <?php
// 사진을로드하십시오
$image = imagecreatefromjpeg('http://gitbox.net/example.jpg');
if (!$image) {
    die('이미지를로드하지 못했습니다');
}

// 원래 이미지 크기를 얻으십시오
$imgWidth = imagesx($image);
$imgHeight = imagesy($image);

// 작물 매개 변수를 설정하십시오
$cropRect = [
    'x' => 50,
    'y' => 30,
    'width' => 200,
    'height' => 150,
];

// 절단 영역이 합법적인지 확인하십시오
if ($cropRect['x'] < 0 || $cropRect['y'] < 0 ||
    $cropRect['x'] + $cropRect['width'] > $imgWidth ||
    $cropRect['y'] + $cropRect['height'] > $imgHeight) {
    die('작물 면적은 이미지 경계를 초과합니다');
}

// 작물 사진
$cropped = imagecrop($image, $cropRect);
if ($cropped !== false) {
    // 잘린 사진을 저장하십시오
    imagejpeg($cropped, 'cropped_example.jpg');
    imagedestroy($cropped);
    echo "성공적인 컷!";
} else {
    echo "자르기가 실패했습니다!";
}

// 자원을 자유롭게합니다
imagedestroy($image);
?>

5. 자주 묻는 질문과 해결책

  • 자르기 영역은 그림 경계를 초과합니다 <br> ImageCrop이 False 를 반환하게합니다. 솔루션 : 먼저 좌표 및 치수 범위를 감지하고 제한합니다.

  • 너비 또는 높이 또는 좌표는 음수 또는 비 인구입니다 <br> intval () 함수를 사용하여 매개 변수를 전달하기 전에 올바른 유형을 확인하십시오.

  • 원래 이미지 리소스는 비어 있습니다 <br> 이미지 경로가 정확하고 PHP가 GD 확장을 가능하게했는지 확인하십시오.


6. 요약

  • ImageCrop은 직사각형 영역의 명확하고 올바른 자르기가 필요합니다.

  • 좌표 xy는 왼쪽 상단 모서리 위치를 참조하고 너비와 높이는 양의 정수 여야하며 원래 이미지 범위를 초과 할 수 없습니다.

  • 자르기 매개 변수의 정당성을 확인하기 위해 이미지 크기를 미리 획득하십시오.

  • 프로그램 예외를 피하려면 코드의 오류를 확인하십시오.

이러한 주요 포인트에 대한 올바른 이해를 통해 PHP에서 이미지 자르기 기능을 효율적이고 안정적으로 완료 할 수 있습니다.