一副1024*768大小的图片,裁剪到240*240大小,裁剪后不失真,尽可能保留图片主题含义。
我使用到的方法:
1. 先将图片等比例缩略到可以裁剪的大小;
如果是宽幅图片,则按高度等比例缩放到高度 = 240px,窄幅图片(高度大于宽度)则按宽度等比例缩放;
2. 按长宽格式居中裁剪;
保留缩略后的图片中间部分;
$this
->load->library(
'image_lib'
);
list(
$width
,
$height
) =
getimagesize
(
"upload/123.jpg"
);
$config
[
'image_library'
] =
'gd2'
;
$config
[
'source_image'
] =
'upload/123.jpg'
;
$config
[
'maintain_ratio'
] = TRUE;
if
(
$width
>=
$height
)
{
$config
[
'master_dim'
] =
'height'
;
}
else
{
$config
[
'master_dim'
] =
'width'
;
}
$config
[
'width'
] = 240;
$config
[
'height'
] = 240;
$this
->image_lib->initialize(
$config
);
$this
->image_lib->resize();
$config
[
'maintain_ratio'
] = FALSE;
if
(
$width
>=
$height
)
{
$config
[
'x_axis'
] =
floor
((
$width
* 240 /
$height
- 240)/2);
}
else
{
$config
[
'y_axis'
] =
floor
((
$height
* 240 /
$width
- 240)/2);
}
$this
->image_lib->initialize(
$config
);
$this
->image_lib->crop();