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>