>  기사  >  백엔드 개발  >  이미지 크기를 조정하는 PHP의 이미지 크기 조정 기능에 대한 자세한 설명

이미지 크기를 조정하는 PHP의 이미지 크기 조정 기능에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-26 13:47:217556검색

PHP에 구현된 일부 이미지 크기 조정 기능을 사용했지만 완벽하지 않습니다. 일부 사진은 조정 후 완전히 변형되고 일부는 이유 없이 선이 추가되고 일부는 색상 밝기가 만족스럽지 않습니다. 오늘 다시 검색해서 더 많은 결과를 얻었습니다.

if(isset($_FILES['manager_photo']) && !empty($_FILES['manager_photo']['name']))
    {
        $photo_name=$manager_name."-".$_FILES["manager_photo"]["name"];
        $tmpname = $_FILES['manager_photo']['tmp_name'];
        $file_ext= substr($photo_name, strripos($photo_name, '.'));   
        $dir = "./manager_photos/";
        // finally resize
        @img_resize( $tmpname , 90 ,  $dir , $photo_name, 1);
}
function img_resize( $tmpname, $size, $save_dir, $save_name, $maxisheight = 0 )
    {
    $save_dir     .= ( substr($save_dir,-1) != "/") ? "/" : "";
    $gis        = getimagesize($tmpname);
    $type        = $gis[2];
    switch($type)
        {
        case "1": $imorig = imagecreatefromgif($tmpname); break;
        case "2": $imorig = imagecreatefromjpeg($tmpname);break;
        case "3": $imorig = imagecreatefrompng($tmpname); break;
        default:  $imorig = imagecreatefromjpeg($tmpname);
        }
        $x = imagesx($imorig);
        $y = imagesy($imorig);
        $woh = (!$maxisheight)? $gis[0] : $gis[1] ; 
        if($woh <= $size)
        {
        $aw = $x;
        $ah = $y;
        }
            else
        {
            if(!$maxisheight){
                $aw = $size;
                $ah = $size * $y / $x;
            } else {
                $aw = $size * $x / $y;
                $ah = $size;
            }
        }
        $im = imagecreatetruecolor($aw,$ah);
    if (imagecopyresampled($im,$imorig , 0,0,0,0,$aw,$ah,$x,$y))
        if (imagejpeg($im, $save_dir.$save_name))
            return true;
            else
            return false;
}//img_resize

ImageMagick을 사용하여 구현

누군가 ImageMagick을 사용하여 구현한다고 언급했는데, 여기에는 많은 옵션이 있으며 아주 적은 코드로 이미지 조정을 수행할 수 있습니다. 공부할 가치가 있습니다.

 $image = new Imagick($src);
 $image->resizeImage($width,$height,Imagick::FILTER_LANCZOS,1);
 $image->cropImage($width_2, $height_2, $x, $y);
 $image->setCompression(Imagick::COMPRESSION_JPEG);
 $image->setImageCompressionQuality(82);
 $image->writeImage($dest);
 $image->destroy();

php_class_upload를 사용하여 구현

위 소개가 적합하지 않은 경우 이미지 업로드 및 조정은 물론 자르기, 잘라내기, 워터마크 추가, 회전, 뒤집기 등도 가능합니다.

다른 구현 코드 참조

이 코드는 사진과 올바른 이름을 반환할 수 있지만 검정색만 가능합니까?

function resize($originalImage){
list($width, $height) = getimagesize($originalImage);
$newName=basename($originalImage);
$imageResized = imagecreatetruecolor(128, 128);
$imageTmp = imagecreatefromjpeg($originalImage);
imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, 128, 128, $width, $height);
imagejpeg($imageResized, "resizedImg/$newName",100);
imageDestroy($imageResized);
}

코드가 개선된 후, 다음 코드를 보고 색상을 설정해보세요.

아아아아

위 내용은 이미지 크기를 조정하는 PHP의 이미지 크기 조정 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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