이미지 처리 및 GD imagecopyresized

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagecopyresized — 이미지의 일부 복사 및 크기 조정


설명

imagecopyresized(
    GdImage $dst_image,
    GdImage $src_image,
    int $dst_x,
    int $dst_y,
    int $src_x,
    int $src_y,
    int $dst_width,
    int $dst_height,
    int $src_width,
    int $src_height
): bool
                

imagecopyresized()는 한 이미지의 직사각형 부분을 다른 이미지로 복사합니다. dst_image는 대상 이미지이고 src_image는 소스 이미지 식별자입니다.

즉, imagecopyresized()는 (src_x, src_y) 위치에서 너비 src_width 및 높이 src_heightsrc_image에서 직사각형 영역을 가져와서 (dst_x,dst_y) 위치에서 너비 dst_width 및 높이 dst_heightdst_image 직사각형 영역에 배치합니다.

원본 및 대상 좌표와 너비와 높이가 다른 경우 이미지 조각의 적절한 늘이기 또는 축소가 수행됩니다. 좌표는 왼쪽 상단 모서리를 참조합니다. 이 함수는 동일한 이미지 내의 영역을 복사하는 데 사용할 수 있지만(dst_imagesrc_image와 동일한 경우) 영역이 겹치면 결과를 예측할 수 없습니다.


매개변수

dst_image
대상 이미지 리소스.
src_image
소스 이미지 리소스.
dst_x
목적지의 x 좌표.
dst_y
목적지 지점의 y 좌표.
src_x
소스 포인트의 x 좌표.
src_y
소스 포인트의 y 좌표.
dst_width
목적지 너비.
dst_height
목적지 높이.
src_width
소스 너비.
src_height
소스 높이.

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0 dst_imagesrc_image는 이제 GdImage 인스턴스를 예상합니다. 이전에는 리소스가 필요했습니다.

Examples

예제 #1 이미지 크기 조정

이 예에서는 이미지를 절반 크기로 표시합니다.

                  
<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

function imagecopyresized

imagecopyresampled()를 사용하여 더 나은 품질을 얻을 수 있지만 이미지는 절반 크기로 출력됩니다.


메모

메모:

팔레트 이미지 제한(255+1 색상)으로 인해 문제가 있습니다. 이미지를 리샘플링하거나 필터링하려면 일반적으로 255개 이상의 색상이 필요하며, 새로운 리샘플링된 픽셀과 해당 색상을 계산하는 데 일종의 근사값이 사용됩니다.

팔레트 이미지를 사용하여 새 색상을 할당하려고 시도하고 실패하면 가장 가까운(이론적으로) 계산된 색상을 선택합니다. 이것이 항상 가장 가까운 시각적 색상은 아닙니다. 이는 빈(또는 시각적으로 빈) 이미지와 같은 이상한 결과를 생성할 수 있습니다.

이 문제를 건너뛰려면 imagecreatetruecolor()로 만든 것과 같은 트루컬러 이미지를 대상 이미지로 사용하십시오.


기타

  • imagecopyresampled() - 리샘플링으로 이미지의 일부 복사 및 크기 조정
  • imagescale() - 주어진 새로운 너비와 높이를 사용하여 이미지 크기 조정
  • imagecrop() - 주어진 사각형으로 이미지 자르기