<?php
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;
}
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
);
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
);
header(
'Content-Type: image/jpeg'
);
imagejpeg(
$target_image
);
imagedestroy(
$source_image
);
imagedestroy(
$target_image
);
imagedestroy(
$cropped_image
);
}
$filename
=
"8fcb7a0831b79c61.jpg"
;
imageCropper(
$filename
,200,200);
?>