A php I wrote before processes uploaded images online and can be cropped. Add a watermark image. When the watermark image exceeds the size of the target image, the watermark image can automatically adapt to the target image and shrink. The degree of merging of the watermark image with the background can be set. Source code:
http://www.pooy.net/phpphp.html
- *exif_imagetype -- Determine the type of an image
- *Source code download: http://www.pooy.net/phpphp.html
- *Description: The function is to crop an image to any size Image, the image is not deformed
- * 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, generate the height of the new image
- */
- // Obtain any size image, shortcomings Stretch, no deformation, no blank space
- function my_image_resize($src_file, $dst_file, $new_width, $new_height) {
- $new_width= intval($new_width);
- $new_height=intval($new_width);
- 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
- $type=exif_imagetype($src_file);
- $support_type=array(IMAGETYPE_JPEG , IMAGETYPE_PNG , IMAGETYPE_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 IMAGETYPE_JPEG :
- $src_img=imagecreatefromjpeg($src_file);
- break;
- case IMAGETYPE_PNG :
- $src_img=imagecreatefrompng($src_file);
- break;
- case IMAGETYPE_GIF :
- $src_img=imagecreatefromgif($src_file);
- break;
- default:
- echo "Load image error!";
- exit();
- }
- $w=imagesx($src_img);
- $h=imagesy($src_img);
- $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 or larger than the original ones. The principle is to enlarge by a large ratio and reduce by a large ratio (reduction ratio It’s 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, the aspect ratio of the image just meets the target requirements
- $inter_w=(int)($new_width / $ratio);
- $inter_h=(int) ($new_height / $ratio);
- $inter_img=imagecreatetruecolor($inter_w , $inter_h);
- //var_dump($inter_img);
- imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h);
- // Generate an image with the maximum edge length as the size It is a temporary image of the target image $ratio ratio
- // Define a new image
- $new_img=imagecreatetruecolor($new_width,$new_height);
- //var_dump($new_img);exit();
- 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); // Store image
- 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 One side of the target image is larger than the original image, and one side is smaller than the original image. First enlarge the plain image, and then crop it
- // =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) )
- else{
- $ratio=$ratio_h>$ratio_w? $ratio_h : $ratio_w; //Take the value with the larger ratio
- //Define a The large image in the middle, the height or width of the image is equal to the target image, and then the original image is enlarged
- $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 IMAGETYPE_JPEG :
- imagejpeg($new_img, $dst_file,100); // Store image
- 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
-
- my_image_resize('test.gif','11111.gif','100px','100px');
-
- //Source code download: http://www.pooy.net/phpphp.html
- ?>
Copy code
|