1.建立iamge處理類別
include_once 'ImageResize.class.php';
date_default_timezone_set('PRC'); protected $InputImageFileExtension;
public static function getInstance () {
static $instance;
if (!isset ($instance)) {
$class = __CLASS__;
$instance = new $class ();
}
return $instance;
}
function uploadresize( $fileparam, $imageparam) {
$newW = $imageparam['imageW'];
$newH = $imageparam['imageH'];
]);
//使用圖片格式
$this->InputImageFile 給了新的檔案名稱
if(empty($imageparam['imagename' ])){
$outputFileName = $this->nameinfo[0];
['imagename'];
}
// imageparam['imagepath'])) {
if(!mkdir($imageparam['imagepath }path is wrong');
exit;
$file_src = $imageparam['imagepath']."/". $outputFileName . "_." . $this->InputImageFileExtension;
// temporary safe{image stor //
unlink($file_src);
}
move_uploaded_file($fileparam['tmp_name'], $file_src); ize = new ImageResize();
$imageResize->my_image_resize($file_src,$file_src,$newW,$ newH,$this->InputImageFileExtension);
}
}
?>
2.裁切為任意大小的圖像,圖像不變形
* 參數說明:輸入需要處理圖片的檔案名,產生新圖片的保存檔案名,產生新圖片的寬,產生新圖片的高
* written by smallchicken
* time 2008-12 -18
*/
// 取得任意大小影像,不足地方拉伸,不產生變形,不留下空白
function my_image_resize($src_file, $dst_file, $new_width, $new_height, $type) { if ($ new_width echo "params width or height error !";
exit ();
}
if (! file_exists ( $src_file )) { echo $src_file . " is not exists !";
exit ();
}
// 圖像類型
$support_type = array ("jpg", "png", "gif" );
if (! in_array ( $ type, $support_type, true )) {
echo "this type of image does not support! only support jpg , gif or png";
exit (); "jpg" :
$src_img = imagecreatefromjpeg ( $src_file );
break;
case "png" :
$src_img = imagecreatefrompng ( $src); imagecreatefromgif ( $src_file );
break;
default :
echo "Load image error!";
exit ();
}
$w = imagesx ( $src_img ); if($w // 定義一個中間的暫存影像,該影像的寬高比剛好滿足目標要求
$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比例的暫存圖片
// 定義一個新的圖片
$new_img = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopyresampled ( $new_img, $inter_img, intern, interw, inter0, , $inter_h, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // new_img, $dst_file, 100 );
break;
case "gif" :
imagegif ( $new_img, $dst_file, 100 );
break;
/ ///
$ratio_w = 1.0 * $new_width / $w;
$ratio_h = 1.0 * $new_height / $h;
$ratio = 1.0;
// 生成的圖像的高寬比原來的都小,或都大,原則是取大比例放大,取大比例縮小(縮小的比例就比較小了)
if (($ratio_w 1 && $ratio_h > 1)) {
if ($ratio_w $ratio = $ratio_h; // 情況一,寬度的比例比高度方向的小,按照高度的比例標準來裁剪或放大
} else {
$ratio = $ ratio_w;
}
// 定義一個中間的暫存影像,而影像的寬高比剛好滿足目標要求
$inter_w = ( int ) ($new_width / $ratio);
$inter_h = ( int ) ($new_ight
$inter_h = ( int ) ($new_ight / $ratio);
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopy ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h );為大小的是目標圖像$ratio比例的臨時圖像
// 定義一個新的圖像
$new_img = imagecreatetruecolor ( $new_width, $new_height );
imagecopyresampled ( $new_img, $inter_img, 00,00, 0 $new_width, $new_height, $inter_w, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // 儲存影像:
imagepng ( $new_img, $dst_file, 100 );
break;
case "gif" :
imagegif ( $new_img, $dst_file, 100 ); else {
// end if 1
// 2 目標影像的一邊大於原圖,一邊小於原圖,先放大平普影像,再裁切
// =if( ($ratio_w 1) | | ($ratio_w >1 && $ratio_h $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 );
imagecopy ( $new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height ); "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // 儲存影像
break;
case "png" :
imagepng ( 是 $new_img, $dst_filebreak, 100)
imagepng (~new_img, $dst_file, 100));
imagegif ( $new_img, $dst_file, 100 );
break;
default :
break;
}
} // if3
} // end function
include "../../tools/Image/Image.class.php";
$array = $_FILES['photo'];
//等比例縮放參數'imagepath' => 'd:/xampp/www/', //圖片儲存路徑
'imageW' => 200, //圖片儲存路徑
'imageH' => 200 //圖片儲存路徑
);
if (!empty ($array)) {
Image :: getInstance()->uploadresize($array, $resizeParam);
}
?> action='ImageTools.php' method='post' name='form' enctype="multipart/form-data">