>  기사  >  백엔드 개발  >  PHP는 고정된 이미지 크기를 캡처합니다.

PHP는 고정된 이미지 크기를 캡처합니다.

巴扎黑
巴扎黑원래의
2016-11-23 14:45:41982검색

1.创建iamge处理类 
include_once 'ImageResize.class.php'; 
date_default_timezone_set('PRC'); 
클래스 이미지 {   
  
    protected $nameinfo;   
    보호된 $InputImageFileExtension;    
  
    공개 정적 함수 getInstance() {   
        정적 $instance;   
        if (!isset ($instance)) {   
            $class = __CLASS__;   
            $instance = 새로운 $class ();   
        }   
  
        $instance 반환;   
    }   
  
    function uploadresize($fileparam, $imageparam) {   
  $newW = $imageparam['imageW']; 
  $newH = $imageparam['imageH']; 
        $this->nameinfo = 폭발('.',$fileparam['name']);   
  
        //取得图文格式   
        $this->InputImageFileExtension = $this->nameinfo[1];   
  
        //判断是不是给了 새로운 문자 이름   
        if(empty($imageparam['imagename'])){   
           $outputFileName = $this->nameinfo[0];   
        }else{   
            $outputFileName = $imageparam['imagename'];   
       }   
  
        //判断路径是否수정确   
        if (!file_exists($imageparam['imagepath'])) {   
            if(!mkdir ($imageparam['이미지 경로']) ){   
                새로운 예외 발생('이미지 경로가 잘못되었습니다.');   
                종료;   
           }   
        }   
  
       $file_src = $imageparam['imagepath']."/". $출력파일이름 . "_." . $this->InputImageFileExtension;   
       //  임시로 안전한 이미지 저장   
       if(file_exists($file_src)){   
        unlink($file_src);   
       }   
  
       move_uploaded_file($fileparam['tmp_name'], $file_src);   
       // 이미지 크기 설정 
   $imageResize = new ImageResize(); 
   $imageResize->my_image_resize($file_src,$file_src,$newW,$newH,$this->InputImageFileExtension);  
    }   
}   
?>  

2.设置图文大小处理类: 
class ImageResize { 
/* 
* 이미지 ,图 Image 不变shape 
* 参数说ming:输入 需要处理图 Pictures ural 文件name ,生成新图 Images 保存文件name ,生成 new 图 Images 宽 , 生成 新 图 clips 的 high 
* 작성자: smallchicken 
* 시간 2008-12-18 
*/ 
// 获得任意大小图이미지,不足地方拉伸,不产生变형, 不留下空白 
function my_image_resize($src_file, $dst_file, $new_width, $new_height , $type) { 
if ($new_width < 1 || $new_height < 1) { 
echo "params 너비 또는 높이 오류 !"; 
종료(); 

if (!file_exists ( $src_file )) { 
echo $src_file . " 존재하지 않습니다 !";
exit ();
}
// 이미지 유형
$support_type = array ("jpg", "png", "gif" );

if (! in_array ( $type, $support_type, true )) {
echo "이 유형의 이미지는 지원하지 않습니다! jpg, gif 또는 png만 지원합니다."
exit ();
}
//이미지 로드
switch ($type) {
case "jpg" :
$src_img = imagecreatefromjpeg ( $src_file )
break
case " png" :
$src_img = imagecreatefrompng( $src_file );
break;
case "gif" :
$src_img = imagecreatefrompng( $src_file );
break;
default :
echo "이미지 로드 오류!";
exit ();
$w = Imagesx ( $src_img )
$h = Imagesy ( $src_img ); ///
if($w < $new_width && $h < $new_height){
// 가로 세로 비율이 대상 요구 사항을 충족하는 중간 임시 이미지 정의
$inter_w = $w;
$inter_h = $h;
$inter_img = imagecreatetruecolor( $inter_w, $inter_h )
imagecopy( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h );
// 최대 측면 길이를 대상 이미지로 사용하여 임시 이미지 생성 $ratio ratio
// 새 이미지 정의
$new_img = imagecreatetruecolor ( $inter_w, $inter_h )
imagecopyresampled ( $new_img, $inter_img, 0, 0, 0, 0, $inter_w, $inter_w, $inter_h, $inter_h )
스위치($type) {
case "jpg" :
imagejpeg( $ new_img, $dst_file, 100 ); // 이미지 저장
break;
case "png" :
imagepng ( $new_img, $dst_file, 100 ); " :
imagegif( $new_img, $dst_file, 100 );
break;
default :
break;
}
die();

}
////
$ratio_w = 1.0 * $new_width / $w;
$ratio_h = 1.0 * $new_height / $h;
$ratio = 1.0; 생성된 이미지의 너비는 원본보다 작거나 커집니다. 큰 비율로 확대하고 큰 비율로 줄이는 것이 원칙입니다(축소된 비율은 더 작아집니다)
if (($ratio_w < 1 && $ ratio_h < 1) || ($ratio_w > 1 && $ratio_h > 1)) {
if ($ratio_w < $ratio_h) {
$ratio = $ratio_h; 너비 비율이 높이 방향보다 작고 높이 비율 기준에 따라 잘리거나 확대됩니다.
} else {
$ratio = $ratio_w;
}
// 중간 임시 이미지 정의 , 이미지의 가로 세로 비율이 목표 요구 사항을 충족합니다.
$inter_w = ( int ) ($new_width / $ratio)
$inter_h = ( int ) ($new_height / $ratio)
$inter_img = imagecreatetruecolor( $inter_w, $inter_h );
imagecopy( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h )// 최대 변 길이를 다음과 같이 생성합니다. 크기 대상 이미지의 임시 이미지입니다. $ratio ratio
// 새 이미지 정의
$new_img = imagecreatetruecolor ( $new_width, $new_height )
imagecopyresampled ( $new_img, $inter_img, 0 , 0, 0 , 0, $new_width, $new_height, $inter_w, $inter_h )
스위치($type) {
case "jpg" :
imagejpeg( $new_img, $dst_file, 100 ) ; // 저장 이미지
break;
case "png" :
imagepng ( $new_img, $dst_file, 100 )
case "gif" :
imagegif ( $new_img, $ dst_file, 100 );
break;
default :
break
}
} else {
// 1이면 종료
// 2 대상 이미지가 원본 이미지보다 크고 한쪽이 원본 이미지보다 작습니다. 먼저 일반 이미지를 확대한 다음 잘라냅니다.
// =if( ($ratio_w < 1 && $ratio_h > 1 ) || ($ratio_w >1 && $ratio_h < ;1) )
$ratio = $ratio_h > $ratio_w ? $ratio_h : $ratio_w; 중앙에 큰 이미지를 정의하고, 이미지의 높이나 너비를 동일하게 하고, 원본 이미지를 확대합니다.
$inter_w = ( int ) ($w * $ratio); inter_h = ( int ) ($h * $ratio)
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h )
//크기 조정 후 원본 이미지 자르기
imagecopyresampled ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h, $w, $h );
// 새 이미지 정의
$new_img = imagecreatetruecolor ( $new_width, $new_height ); $new_img, $inter_img, 0, 0, 0, 0, $new_width, $ new_height )
스위치($type) {
case "jpg" :
imagejpeg( $new_img, $dst_file, 100 ); // 이미지 저장
break;
case "png" :
imagepng ( $new_img, $dst_file, 100 )
case "gif" :
imagegif ( $new_img, $dst_file, 100 );
break;
default :
break
}
} // if3
} // 함수 종료
🎜>?>

3. 고정된 이미지 크기 및 경로 설정

include "../../tools/Image/Image.class.php" ;
$array = $_FILES['photo'];

//균등 배율 매개변수
$resizeParam = array (
'imagepath' => 'd:/xampp/ www /', //이미지 저장 경로
'imageW' => 200, //이미지 저장 경로
'imageH' => 200 //이미지 저장 경로
)
if ( !empty ( $array)) {
Image :: getInstance()->uploadresize($array, $resizeParam)
}
?>4. 간단한 형식

< ;html>

유형='파일' 이름='사진'>
<입력 유형=제출 값='제출'>
HTML>

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