PHP 이미지 처리: imagecopyresampled 함수를 사용한 이미지 크기 조정의 예

高洛峰
풀어 주다: 2023-03-04 09:38:01
원래의
1385명이 탐색했습니다.

웹사이트 최적화는 코드에만 집중할 수 없습니다. 콘텐츠도 웹사이트의 가장 중요한 객체 중 하나이며, 이미지는 웹사이트에서 가장 중요한 콘텐츠입니다. 이미지를 최적화할 때 가장 중요한 것은 웹사이트에 업로드된 모든 큰 이미지를 자동으로 작은 이미지(웹페이지에 적합한 크기)로 크기 조정하여 저장 공간을 N배로 줄이고 속도를 높이는 것입니다. 다운로드 및 탐색. 따라서 이미지를 동적 웹사이트로 확장하는 작업은 종종 파일 업로드와 연결되어 이미지를 업로드하는 동안 크기가 조정될 수 있습니다. 물론, 이미지 크기 조정을 별도로 처리해야 하는 경우도 있습니다. 예를 들어 사진 목록을 만들 때 큰 이미지를 직접 사용하고 표시할 때 작은 이미지로만 확대하면 다운로드 속도가 느려질 뿐만 아니라 속도를 높일 뿐 아니라 페이지 응답 시간도 줄입니다. 일반적으로 이러한 응용 프로그램을 접하면 사진을 업로드할 때 목록을 만드는 데 특별히 사용되는 작은 아이콘이 사진에 맞게 조정됩니다. 이 작은 아이콘을 클릭하면 탐색을 위해 큰 사진이 다운로드됩니다.

GD 라이브러리를 사용하여 이미지 크기 조정을 처리합니다. 일반적으로 imagecopyreized() 및 imagecopyresampled() 함수 중 하나를 사용하여 imagecopyresampled() 함수를 사용하면 품질이 더 좋아집니다. 여기에서는 imagecopyresampled() 함수를 사용하는 방법만 소개합니다. 이 함수의 프로토타입은 다음과 같습니다.

  bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h)
로그인 후 복사

이 함수는 한 이미지에서 다른 이미지로 정사각형 영역을 복사하여 픽셀 값을 부드럽게 보간하여 매우 높은 정의를 유지하면서 이미지 크기를 줄입니다. 성공하면 TRUE를, 실패하면 FALSE를 반환합니다. dst_image 및 src_image 매개변수는 각각 대상 이미지와 소스 이미지의 식별자입니다. 소스와 대상의 너비와 높이가 다른 경우 이미지는 그에 따라 줄어들거나 늘어납니다. 좌표는 왼쪽 위 모서리를 참조합니다. 이 함수는 동일한 이미지 내에서 복사하는 데 사용할 수 있지만(dst_image와 src_image가 동일한 경우) 영역이 겹치는 경우 결과를 예측할 수 없습니다. 다음 예에서는 JPEG 이미지 형식을 예로 들어 이미지 크기 조정 함수 Thumb()을 작성합니다. 코드는 다음과 같습니다.

<?php
    //用于对图片进行缩放
    function thumb($filename,$width=200,$height=200){
        //获取原图像$filename的宽度$width_orig和高度$height_orig
        list($width_orig,$height_orig) = getimagesize($filename);
        //根据参数$width和$height值,换算出等比例缩放的高度和宽度
        if ($width && ($width_orig<$height_orig)){
            $width = ($height/$height_orig)*$width_orig;
        }else{
            $height = ($width / $width_orig)*$height_orig;
        }
 
        //将原图缩放到这个新创建的图片资源中
        $image_p = imagecreatetruecolor($width, $height);
        //获取原图的图像资源
        $image = imagecreatefromjpeg($filename);
 
        //使用imagecopyresampled()函数进行缩放设置
        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
 
        //将缩放后的图片$image_p保存,100(质量最佳,文件最大)
        imagejpeg($image_p,$filename);
 
        imagedestroy($image_p);
        imagedestroy($image);
    }
 
    thumb("brophp.jpg",100,100);
?>
로그인 후 복사

imagecopyresampled 함수를 사용하여 구현하는 추가 PHP 이미지 처리 예 이미지 스케일링 관련 기사는 PHP 중국어 사이트를 주목해주세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿