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);
?>
입력 _ 이미지 :
출력:
Width:225
Height:225
Type:2
here is jpeg output:
출력 _ 이미지 :
이 섹션에서는 이미지를로드하고 원본 이미지의 크기를 계산하기 때문에 둘 다 동일한 이미지입니다.
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');
?>
입력 _ 이미지 :
출력 _ 이미지 :
위에서 설명한대로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);
?>
입력 _ 이미지 :
출력 _ 이미지 :
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
$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);
?>
입력 _ 이미지 :
Output_Image :