This time I will bring you a detailed explanation of the steps for cropping images to a fixed size in PHP.What are the precautions for cropping images to a fixed size in PHP? The following is a practical case, let's take a look.
To make a home page call image, sometimes you need to obtain a fixed size image, because the image position of the home page is usually specified by the designer. If you are making a latest release image call, because you don’t know what the customer will The solution is to crop any image to a fixed size, the image will not be deformed, and the blank space will be stretched and filled. The image will always be filled with no blank space. Friends who have used bcastr should know that bcastr guarantees image calling. Without deformation, for a fixed-size output image frame, the source image has the following situations:1: The height and width of the image to be output are smaller than the height and width of the source image, written as judgment $new_width<$src_width && $ new_
height<$src_width2: The height and width of the image to be output are larger than the height and width of the original image, written as judgment $new_width>$src_width && $new_height>$src_width
3 : Exclude the two types 1 and 2, that is, the situation of zooming in and zooming out at the same time plus the judgment of equality
For 1 and 2, the function processing codes are exactly the same, so they can be summarized into one processing statement
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比例的临时图像 // 定义一个新的图像 $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 IMAGETYPE_JPEG : imagejpeg($new_img, $dst_file,100); // 存储图像 break; case IMAGETYPE_PNG : imagepng($new_img,$dst_file,100); break; case IMAGETYPE_GIF : imagegif($new_img,$dst_file,100); break; default: break; } } // end if 1 // 2 目标图像 的一个边大于原图,一个边小于原图 ,先放大平普图像,然后裁剪 // =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) ) else{ $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); switch($type) { case IMAGETYPE_JPEG : imagejpeg($new_img, $dst_file,100); // 存储图像 break; case IMAGETYPE_PNG : imagepng($new_img,$dst_file,100); break; case IMAGETYPE_GIF : imagegif($new_img,$dst_file,100); break; default: break; } }// if3 }// end function ?>
php Detailed explanation of ZIP compression class example steps
PHP crops without affecting the shape of the image
The above is the detailed content of Detailed explanation of the steps to crop images to a fixed size in PHP. For more information, please follow other related articles on the PHP Chinese website!