>  기사  >  백엔드 개발  >  왜곡없이 PHP에서 이미지를 압축하는 방법

왜곡없이 PHP에서 이미지를 압축하는 방법

王林
王林원래의
2023-05-06 18:26:071939검색

인터넷 기술의 발달로 사진은 웹디자인에 있어서 없어서는 안될 부분이 되었지만, 그에 따라 로딩속도의 문제가 발생하게 되었습니다. 웹페이지를 빠르게 만들기 위해서는 이미지를 압축해야 하는데, 압축 과정에서 이미지 왜곡이 발생하기 쉬우므로 더욱 발전된 기술이 필요합니다. 이 기사에서는 PHP를 사용하여 왜곡 없이 이미지를 압축하는 방법을 소개합니다.

1. PHP의 GD 라이브러리 사용

PHP의 GD 라이브러리는 크기 조정, 자르기, 회전, 워터마킹 등과 같은 다양한 그래픽 작업을 처리하는 데 사용할 수 있는 일반적으로 사용되는 그래픽 라이브러리입니다. 이 라이브러리를 활용하면 이미지를 왜곡 없이 지정된 크기로 압축할 수 있습니다. 이미지 압축을 위해 PHP의 GD 라이브러리를 사용하는 방법을 살펴보겠습니다.

먼저, PHP에 GD 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않은 경우 다음 명령을 통해 설치할 수 있습니다.

sudo apt-get install php-gd

설치 후 이미지를 압축하는 코드를 작성할 수 있습니다. 먼저 이미지를 로드해야 합니다.

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);
?>

다음으로 압축된 이미지 크기를 지정해야 합니다.

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;
?>

그런 다음 이미지의 실제 크기와 압축 비율을 계산해야 합니다.

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);
?>

이제 이미 이미지의 실제 크기 크기 및 압축 비율, 다음 단계는 이미지를 지정된 크기로 압축하는 것입니다.

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);

// 创建新图片
$new_image = imagecreatetruecolor($new_width, $new_height);

// 复制原图片到新图片并压缩
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 保存压缩后的图片
imagejpeg($new_image, 'compressed.jpg', 90);
?>

마지막 단계는 압축된 이미지를 저장하는 것입니다. 여기서는 imagejpeg() 함수를 사용하여 JPEG로 저장합니다. 세 번째 매개변수는 압축 품질입니다. Large 값이 높을수록 파일 크기가 커집니다.

2. 타사 라이브러리 사용: TinyPNG

압축을 위해 PHP의 GD 라이브러리를 사용하는 것 외에도 작업을 위해 일부 타사 라이브러리를 사용할 수도 있습니다. 그중 아주 좋은 압축 이미지 라이브러리는 TinyPNG입니다. JPEG, PNG 및 기타 이미지를 왜곡 없이 가장 작은 크기로 압축할 수 있습니다.

먼저 TinyPNG 공식 웹사이트에 등록하고 API 키를 생성해야 합니다. 그런 다음 API를 통해 직접 이미지를 압축할 수 있습니다. 다음은 TinyPNG를 사용한 이미지 압축 코드입니다.

<?php
require_once 'vendor/autoload.php';

// 指定图片路径
$file = 'source.jpg';

// 压缩图片并保存
\Tinify\setKey("YOUR_API_KEY");
\Tinify\fromFile($file)->toFile('compressed.jpg');
?>

여기에서는 공식적으로 제공되는 PHP SDK를 사용하고 코드에 API 키를 지정한 다음 fromFile() 메서드를 사용하여 압축할 이미지를 로드할 수 있습니다. ) 압축된 이미지를 지정된 경로에 저장하는 방법입니다.

요약

이미지 압축을 위해 PHP의 GD 라이브러리를 사용하든 타사 라이브러리 TinyPNG를 사용하든 이미지 품질을 보장하면서 이미지 파일 크기를 최대한 줄이고 웹사이트 로딩 속도를 향상시킬 수 있습니다. 실제 프로젝트에서는 구체적인 상황에 따라 선택하고 유연하게 사용해야 합니다. 이미지 압축을 잘 수행하면 웹 페이지 성능이 향상될 뿐만 아니라 사용자에게 더 나은 액세스 경험을 제공할 수 있습니다.

위 내용은 왜곡없이 PHP에서 이미지를 압축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.