PHP에서 이미지 크기 조정

Muhammad Abubakar 2023년1월30일
  1. 크기를 조정하기 전에 이미지로드
  2. PHP의imagecopyresized()
  3. PHP의 imagecopyresampled()
  4. PHP의imagescale()
PHP에서 이미지 크기 조정

이 튜토리얼 기사에서는 PHP에서 이미지 크기 조정에 대해 설명합니다.

크기를 조정하기 전에 이미지로드

이미지 크기를 조정하기 전에 먼저 스크립트 내에서 이미지 리소스로로드해야합니다. 이미지 파일의 내용을 가져 오기 위해file_get_contents()와 같은 함수를 사용하는 것과는 다릅니다. 파일을로드하려면 특히imagecreatefromjpeg(),imagecreatefrompng()imagecreatefromgif()와 같은 함수를 사용해야합니다. 크기를 조정할 이미지 유형에 따라 그에 따라 다른 기능을 사용합니다.

PHP의getimagesize()

이미지를로드 한 후getimagesize()를 사용하여 입력 이미지의 너비, 높이 및 유형을 계산합니다. 이 함수는 이미지의 너비와 높이가 각각 인덱스 0과 1에 저장되고IMAGETYPE_XXX상수가 인덱스 2에 저장되는 항목 목록을 반환합니다.이 반환 된 상수의 값을 사용하여 무엇을 알아낼 것입니다. 사용할 이미지의 종류와 사용할 기능.

<?php
function load_image($filename, $type) {
    $new = 'new34.jpeg';
    if( $type == IMAGETYPE_JPEG ) {
        $image = imagecreatefromjpeg($filename);
        echo "here is jpeg output:";
        imagejpeg($image, $new);

    }
    elseif( $type == IMAGETYPE_PNG ) {
        $image = imagecreatefrompng($filename);
        echo "here is png output:";
        imagepng($image,$new);
    }
    elseif( $type == IMAGETYPE_GIF ) {
        $image = imagecreatefromgif($filename);
        echo "here is gif output:";
        imagejpeg($image, $new);
    }
    return $new;
}

$filename = "panda.jpeg";
list($width, $height,$type) = getimagesize($filename);
echo "Width:" , $width,"\n";
echo "Height:", $height,"\n";
echo "Type:", $type, "\n";

$old_image = load_image($filename, $type);
?>

입력 _ 이미지 :

PHP 크기 조정 이미지-원본 이미지

출력:

Width:225
Height:225
Type:2
here is jpeg output:

출력 _ 이미지 :

PHP 크기 조정 이미지

이 섹션에서는 이미지를로드하고 원본 이미지의 크기를 계산하기 때문에 둘 다 동일한 이미지입니다.

PHP의imagecopyresized()

imagecopyresized()(src_x,src_y)위치의src_image에서 너비src_w와 높이src_h의 직사각형 영역을 가져와(dst_x, dst_y) 위치에있는 대상 이미지의 직사각형 영역에 배치합니다. . PHP에 내장 된 함수입니다.

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

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

// Get new sizes
list($width, $height, $type) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$type = $list[2];
echo $type;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

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

// Output
imagejpeg($thumb,'new.jpeg');
?>

입력 _ 이미지 :

PHP 크기 조정 이미지-원본 이미지

출력 _ 이미지 :

PHP 크기 조정 이미지

위에서 설명한대로imagecopyresize()함수는 아래 나열된 10 개의 매개 변수를받습니다.

매개 변수 설명
$dst_image 대상 이미지 리소스
$src_image 소스 이미지 리소스
$dst_x 목적지 지점의 x 좌표
$dst_y 목적지 지점의 y 좌표
$src_x 소스 포인트의 x 좌표
$src_y 소스 포인트의 y 좌표
$dst_w 목적지 폭
$dst_h 목적지 높이
$src_w 소스 너비
$src_h 소스 높이

성공하면 TRUE, 실패하면 FALSE를 반환합니다.

PHP의 imagecopyresampled()

imagecopyresampled()는 한 이미지의 직사각형 부분을 원활하게 보간하는 다른 픽셀 값으로 복사하여 높은 수준의 선명도를 유지하면서 그림의 크기를 줄입니다.

imagecopyresized()기능과 유사하게 작동하며 이미지 크기를 조정하는 것 외에도 이미지를 샘플링하는 추가 이점이 있습니다.

<?php
// The file
$filename = 'panda.jpeg';
$percent = 2;

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

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, 'resampled1.jpeg', 100);
?>

입력 _ 이미지 :

PHP 크기 조정 이미지-원본 이미지

출력 _ 이미지 :

PHP 크기 조정 이미지

imagecopyresampled()함수는 10 개의 다른 매개 변수를받습니다.

매개 변수 설명
$image_p 대상 이미지를 결정합니다.
$image 소스 이미지를 결정합니다.
$x_dest 대상 이미지의 x 좌표를 결정합니다.
$y_dest 대상 이미지의 y 좌표를 결정합니다.
$x_src 소스 이미지의 x 좌표를 결정합니다.
$y_src 소스 이미지의 y 좌표를 결정합니다.
$wid_dest 새 이미지의 너비를 결정합니다.
$hei_dest 새 이미지의 높이를 결정합니다.
$wid_src 오래된 이미지의 너비를 결정합니다.
$wid_src 오래된 이미지의 높이를 결정합니다.

참고 : 비율에 따라 리샘플링 할 수도 있습니다. 비율 대신dest_image의 너비와 높이를 제공하여 가능합니다.

PHP의imagescale()

최신 이미지의 너비 또는 높이를 정의하는 대신 크기를 지정합니다. 새 이미지 크기가 첫 번째 이미지의 절반이되도록하려면 크기를 0.8로 설정합니다. 다음은 비율을 유지하면서 주어진 요소로 그림의 크기를 조정하는 예제 코드입니다.

scale image()함수 내에서 지정된 배율로 이미지의 원래 너비와 높이를 곱합니다.

다음은 그 예입니다.

<?php
    
function load_image($filename, $type) {

        if( $type == IMAGETYPE_JPEG ) {
            $image = imagecreatefromjpeg($filename);

        }
        elseif( $type == IMAGETYPE_PNG ) {
            $image = imagecreatefrompng($filename);
           
        }
        elseif( $type == IMAGETYPE_GIF ) {
            $image = imagecreatefromgif($filename);
            
        }
        
        return $image;
    }
function scale_image($scale, $image, $width, $height) {
    $new_width = $width * $scale;
    $new_height = $height * $scale;
    return resize_image($new_width, $new_height, $image, $width, $height);
    
}
function resize_image($new_width, $new_height, $image, $width, $height) {
    $image12 = 'hello.jpeg';
    $new_imag = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($new_imag, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    
    return imagejpeg($new_imag, $image12);
    }


$filename = "panda.jpeg";
list($width, $height, $type) = getimagesize($filename);
$old_image = load_image($filename, $type);
$image_scaled = scale_image(0.8, $old_image, $width, $height);
?>

입력 _ 이미지 :

PHP 크기 조정 이미지-원본 이미지

출력 _ 이미지 :

PHP 크기 조정 이미지

그 외에도 PHP에는 이미지를 지정된 너비와 높이로 조정할 수있는 기능이 내장되어 있습니다.

예제 코드를 참조하십시오.

<?php
    
$out_image = "sca.jpeg";
$image_name ="panda.jpeg";
     
// Load image file
$image = imagecreatefromjpeg($image_name);
  
// Use imagescale() function to scale the image
$img = imagescale( $image, 500, 400 );
  

header("Content-type: image/jpeg");
imagejpeg($img,$out_image);
  
?>

입력 _ 이미지 :

PHP 크기 조정 이미지-원본 이미지

Output_Image :

PHP 크기 조정 이미지

관련 문장 - PHP Image