生活随笔
收集整理的這篇文章主要介紹了
php 图片剪切
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 <?
php
2
3 /**
4 * 圖像裁剪
5 * @param $source_path 原圖路徑
6 * @param $target_width 需要裁剪的寬
7 * @param $target_height 需要裁剪的高
8 * @return bool
9 */
10 function imagecropper(
$source_path,
$target_width,
$target_height)
11 {
12 $source_info =
getimagesize(
$source_path);
13 $source_width =
$source_info[0
];
14 $source_height =
$source_info[1
];
15 $source_mime =
$source_info['mime'
];
16 $source_ratio =
$source_height /
$source_width;
17 $target_ratio =
$target_height /
$target_width;
18
19 // 源圖過高
20 if (
$source_ratio >
$target_ratio) {
21 $cropped_width =
$source_width;
22 $cropped_height =
$source_width *
$target_ratio;
23 $source_x = 0
;
24 $source_y = (
$source_height -
$cropped_height) / 2
;
25 }
// 源圖過寬
26 elseif (
$source_ratio <
$target_ratio) {
27 $cropped_width =
$source_height /
$target_ratio;
28 $cropped_height =
$source_height;
29 $source_x = (
$source_width -
$cropped_width) / 2
;
30 $source_y = 0
;
31 }
// 源圖適中
32 else {
33 $cropped_width =
$source_width;
34 $cropped_height =
$source_height;
35 $source_x = 0
;
36 $source_y = 0
;
37 }
38 $funcList =
array(
39 'image/gif' =>
array(
40 'create' => 'imagecreatefromgif',
41 'make' => 'imagegif',
42 'mime' => '.gif',
43 ),
44 'image/jpeg' =>
array(
45 'create' => 'imagecreatefromjpeg',
46 'make' => 'imagejpeg',
47 'mime' => '.jpg',
48 ),
49 'image/png' =>
array(
50 'create' => 'imagecreatefrompng',
51 'make' => 'imagepng',
52 'mime' => '.png',
53 ),
54 );
55 if (
isset(
$funcList[
$source_mime])) {
56 $curFunc =
$funcList[
$source_mime];
57 }
else {
58 return FALSE;
59 }
60 $source_image =
$curFunc['create'](
$source_path);
61
62 $target_image = imagecreatetruecolor(
$target_width,
$target_height);
63 $cropped_image = imagecreatetruecolor(
$cropped_width,
$cropped_height);
64
65 // 裁剪
66 imagecopy(
$cropped_image,
$source_image, 0, 0,
$source_x,
$source_y,
$cropped_width,
$cropped_height);
67 // 縮放
68 imagecopyresampled(
$target_image,
$cropped_image, 0, 0, 0, 0,
$target_width,
$target_height,
$cropped_width,
$cropped_height);
69
70 //保存圖片到本地(兩者選一)
71 $randNumber =
mt_rand(00000, 99999) .
mt_rand(000, 999
);
72 //$fileName = substr(md5($randNumber), 8, 16) . ".png";
73 $fileName =
time() . '_' .
substr(
md5(
$randNumber), 8, 16) .
$curFunc['mime'
];
74 //imagepng($target_image, './' . $fileName);
75 //imagepng($target_image, './' . $fileName);
76 //$imgFunc2($target_image, './' . $fileName);
77 $curFunc['make'](
$target_image, './' .
$fileName);
78 imagedestroy(
$target_image);
79
80 //直接在瀏覽器輸出圖片(兩者選一)
81 /*header('Content-Type: image/jpeg');
82 imagepng($target_image);
83 imagedestroy($target_image);
84 imagejpeg($target_image);
85 imagedestroy($source_image);
86 imagedestroy($target_image);
87 imagedestroy($cropped_image);*/
88 }
89
90 //調用
91 //imagecropper('./img033.jpg',300,300);
92 imagecropper('./4.jpg', 140, 140
);
93 //imagecropper('./img033.jpg',55,55);
94 ?>
?
<?php
/**
* 圖像裁剪
* @param $source_path 原圖路徑
* @param $target_width 需要裁剪的寬
* @param $target_height 需要裁剪的高
* @return bool
*/
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) {
$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) {
$cropped_width = $source_height / $target_ratio;
$cropped_height = $source_height;
$source_x = ($source_width - $cropped_width) / 2;
$source_y = 0;
} // 源圖適中
else {
$cropped_width = $source_width;
$cropped_height = $source_height;
$source_x = 0;
$source_y = 0;
}
$funcList = array(
'image/gif' => array(
'create' => 'imagecreatefromgif',
'make' => 'imagegif',
'mime' => '.gif',
),
'image/jpeg' => array(
'create' => 'imagecreatefromjpeg',
'make' => 'imagejpeg',
'mime' => '.jpg',
),
'image/png' => array(
'create' => 'imagecreatefrompng',
'make' => 'imagepng',
'mime' => '.png',
),
);
if (isset($funcList[$source_mime])) {
$curFunc = $funcList[$source_mime];
} else {
return FALSE;
}
$source_image = $curFunc['create']($source_path);
$target_image = imagecreatetruecolor($target_width, $target_height);
$cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
// 裁剪
imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
// 縮放
imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
//保存圖片到本地(兩者選一)
$randNumber = mt_rand(00000, 99999) . mt_rand(000, 999);
//$fileName = substr(md5($randNumber), 8, 16) . ".png";
$fileName = time() . '_' . substr(md5($randNumber), 8, 16) . $curFunc['mime'];
//imagepng($target_image, './' . $fileName);
//imagepng($target_image, './' . $fileName);
//$imgFunc2($target_image, './' . $fileName);
$curFunc['make']($target_image, './' . $fileName);
imagedestroy($target_image);
//直接在瀏覽器輸出圖片(兩者選一)
/*header('Content-Type: image/jpeg');
imagepng($target_image);
imagedestroy($target_image);
imagejpeg($target_image);
imagedestroy($source_image);
imagedestroy($target_image);
imagedestroy($cropped_image);*/
}
//調用
//imagecropper('./img033.jpg',300,300);
imagecropper('./4.jpg', 140, 140);
//imagecropper('./img033.jpg',55,55);
?>
總結
以上是生活随笔為你收集整理的php 图片剪切的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。