1. Create iamge processing class
include_once 'ImageResize.class.php';
date_default_timezone_set('PRC');
class Image {
protected $nameinfo;
protected $InputImageFileExtension;
public static function getInstance() { static $instance; return ($fileparam, $imageparam) {
$newW = $imageparam['imageW'];
$newH = $imageparam['imageH'];
$this->nameinfo = explode('.',$fileparam[' name']);
imageparam ['imagename'])){ $outputFileName = $outputFileName
// Determine whether the path is correct (!file_exists($imageparam['imagepath'])) {
Le i $ file_src = $ ImageParam ['ImagePath']. "/". $ OUTPUTFILENAME. "_.". Age f If (File_exists ($ File_src)) {
unlink($file_src); unlink($file_src); ;my_image_resize($file_src, $file_src,$newW,$newH,$this->InputImageFileExtension);
}
}
?>
2. Set the image size processing class:
class ImageResize {
/*
* Description : The function is to crop an image to an image of any size without deformation of the image
* Parameter description: Enter the file name of the image to be processed, generate the save file name of the new image, generate the width of the new image, and generate the height of the new image
* written by smallchicken
* time 2008-12-18
*/
// Get an image of any size, stretch the missing parts, no deformation, no blank space
function my_image_resize($src_file, $dst_file, $new_width, $ new_height, $type) {
if ($new_width < 1 || $new_height < 1) {
echo "params width or height error !";
exit ();
}
if (! file_exists ( $src_file ) ) {
echo $src_file . " is not exists !";
exit ();
}
// Image type
$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 ();
}
//Load image
switch ($type) {
case "jpg" :
$src_img = imagecreatefromjpeg ( $src_file );
break;
case "png" :
$src_img = imagecreatefrompng ( $src_file );
break;
case "gif" :
$src_img = imagecreatefromgif ( $src_file );
break;
default :
echo "Load image error!";
exit ();
}
$w = imagesx ( $src_img );
$h = imagesy ( $src_img );
////
if($w < $new_width && $h < $new_height){
// Define an intermediate temporary image whose aspect ratio just meets the target requirements
$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 );
// Generate an image with the maximum side length as the size It is a temporary image of the target image $ratio ratio
// Define a new image
$new_img = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopyresampled ( $new_img, $inter_img, 0, 0, 0, 0, $inter_w, $inter_w, $inter_h, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // Store image
break;
case "png" :
imagepng ( $new_img, $dst_file, 100 );
break;
case "gif" :
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;
// The height and width of the generated image are smaller than the original, Or both are large, the principle is to use a large ratio to enlarge, and use a large ratio to reduce (the reduced ratio will be smaller)
if (($ratio_w < 1 && $ratio_h < 1) || ($ratio_w > 1 && $ ratio_h > 1)) {
if ($ratio_w < $ratio_h) {
$ratio = $ratio_h; // Case 1, the width ratio is smaller than the height direction, crop or enlarge according to the height ratio standard
} else {
$ratio = $ratio_w;
}
// Define an intermediate temporary image whose aspect ratio just meets the target requirements
$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 );
/ / Generate a temporary image with the maximum side length as the target image $ratio ratio
// Define a new image
$new_img = imagecreatetruecolor ( $new_width, $new_height );
imagecopyresampled ( $new_img, $inter_img, 0 , 0, 0, 0, $new_width, $new_height, $inter_w, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // Store image
break;
case "png" :
imagepng ( $new_img, $dst_file, 100 );
break;
case "gif" :
imagegif ( $new_img, $dst_file, 100 );
break;
default :
break;
}
} else {
// end if 1
// 2 One side of the target image is larger than the original image, and one side is smaller than the original image. First enlarge the ordinary image, and then crop it
// =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) )
$ratio = $ratio_h > $ratio_w ? $ratio_h : $ratio_w; //Take the value with the larger ratio
// Define a large intermediate image whose height or width is equal to the target image, and then enlarge the original image
$inter_w = ( int ) ($w * $ratio);
$inter_h = ( int ) ($h * $ratio);
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h );
//Crop the original image after scaling it
imagecopyresampled ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h , $w, $h );
// Define a new image
$new_img = imagecreatetruecolor ( $new_width, $new_height );
imagecopy ( $new_img, $inter_img, 0, 0, 0, 0, $new_width, $ new_height );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // Store image
break;
case "png" :
imagepng ( $new_img, $dst_file, 100 );
break;
case "gif" :
imagegif ( $new_img, $dst_file, 100 );
break;
default :
break;
}
} // if3
} // end function
}
?>
3. Image fixed size and path settings
include "../../tools/Image/Image.class.php";
$array = $_FILES['photo'];
//Equal scaling parameter
$resizeParam = array (
'imagepath' => 'd:/xampp/www/', //Image storage path
'imageW' => 200, //Image storage path
'imageH' => 200 //Image storage path
);
if (!empty ($array)) {
Image :: getInstance()->uploadresize($array, $resizeParam);
}
?>
4. Simple form