本文实例讲述了PHP实现图片不变型裁剪及图片按比例裁剪的方法。分享给大家供大家参考,具体如下:
图片不变型裁剪
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
<?php /** * imageCropper * @param string $source_path * @param string $target_width * @param string $target_height */ function imageCropper( $source_path , $target_width , $target_height ){ $source_info = getimagesize ( $source_path ); $source_width = $source_info [0]; $source_height = $source_info [1]; $source_mime = $source_info [ 'mime' ]; $source_ratio = $source_height / $source_width ; $target_ratio = $target_height / $target_width ; if ( $source_ratio > $target_ratio ){ // image-to-height $cropped_width = $source_width ; $cropped_height = $source_width * $target_ratio ; $source_x = 0; $source_y = ( $source_height - $cropped_height ) / 2; } elseif ( $source_ratio < $target_ratio ){ //image-to-widht $cropped_width = $source_height / $target_ratio ; $cropped_height = $source_height ; $source_x = ( $source_width - $cropped_width ) / 2; $source_y = 0; } else { //image-size-ok $cropped_width = $source_width ; $cropped_height = $source_height ; $source_x = 0; $source_y = 0; } switch ( $source_mime ){ case 'image/gif' : $source_image = imagecreatefromgif( $source_path ); break ; case 'image/jpeg' : $source_image = imagecreatefromjpeg( $source_path ); break ; case 'image/png' : $source_image = imagecreatefrompng( $source_path ); break ; default : return ; break ; } $target_image = imagecreatetruecolor( $target_width , $target_height ); $cropped_image = imagecreatetruecolor( $cropped_width , $cropped_height ); // copy imagecopy( $cropped_image , $source_image , 0, 0, $source_x , $source_y , $cropped_width , $cropped_height ); // zoom imagecopyresampled( $target_image , $cropped_image , 0, 0, 0, 0, $target_width , $target_height , $cropped_width , $cropped_height ); header( 'Content-Type: image/jpeg' ); imagejpeg( $target_image ); imagedestroy( $source_image ); imagedestroy( $target_image ); imagedestroy( $cropped_image ); } $filename = "8fcb7a0831b79c61.jpg" ; imageCropper( $filename ,200,200); ?> |
图片按比例裁剪
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
<?php /** * imageZoom * @param string $file * @param double $zoom */ function imageZoom( $filename , $zoom =0.6){ //baseinfo $sourceImageInfo = getimagesize ( $filename ); $sourceWidth = $sourceImageInfo [0]; $sourceHeight = $sourceImageInfo [1]; $sourceMine = $sourceImageInfo [ 'mime' ]; $sourceRatio = $sourceWidth / $sourceHeight ; $sourceX = 0; $sourceY = 0; //zoom $targetRatio = $zoom ; //target-widht-height $targetWidth = $sourceWidth * $targetRatio ; $targetHeight = $sourceHeight * $targetRatio ; //init-params $sourceImage = null; switch ( $sourceMine ){ case 'image/gif' : $sourceImage = imagecreatefromgif( $filename ); break ; case 'image/jpeg' : $sourceImage = imagecreatefromjpeg( $filename ); break ; case 'image/png' : $sourceImage = imagecreatefrompng( $filename ); break ; default : return ; break ; } //temp-target-image $tempSourceImage = imagecreatetruecolor( $sourceWidth , $sourceHeight ); $targetImage = imagecreatetruecolor( $targetWidth , $targetHeight ); //copy imagecopy( $tempSourceImage , $sourceImage , 0, 0, $sourceX , $sourceY , $sourceWidth , $sourceHeight ); //zoom imagecopyresampled( $targetImage , $tempSourceImage , 0, 0, 0, 0, $targetWidth , $targetHeight , $sourceWidth , $sourceHeight ); //header header( 'Content-Type: image/jpeg' ); //image-loading imagejpeg( $targetImage ); //destroy imagedestroy( $tempSourceImage ); imagedestroy( $sourceImage ); imagedestroy( $targetImage ); } $filename = "8fcb7a0831b79c61.jpg" ; imageZoom( $filename ); ?> |
希望本文所述对大家PHP程序设计有所帮助。