Nếu bạn muốn tự động giảm kích thước ảnh về giới hạn định sẵn, bài viết này sẽ giúp bạn.
Phương thức xử lí
Đầu tiên, bạn thêm hàm này. Lưu ý là hàm này chỉ xử lí định dạng ảnh JPG.
function resize_image($source_image, $target_image, $max_width, $max_height = 0, $quality = 100) {
if (!$image = @imagecreatefromjpeg($source_image)) return false;
list($orig_width, $orig_height) = getimagesize($source_image);
if ($max_width == 0) $max_width = $orig_width;
if ($max_height == 0) $max_height = $orig_height;
$width_ratio = $max_width / $orig_width;
$height_ratio = $max_height / $orig_height;
$ratio = min($width_ratio, $height_ratio);
$new_width = intval($orig_width * $ratio);
$new_height = intval($orig_height * $ratio);
$new_image = imagecreatetruecolor($new_width, $new_height);
$color = imagecolorallocatealpha($new_image, 0, 0, 0, 127);
imagefill($new_image, 0, 0, $color);
imagesavealpha($new_image, true);
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $orig_width, $orig_height);
imagejpeg($new_image, $target_image, $quality);
imagedestroy($image);
imagedestroy($new_image);
return array('w' => $new_width, 'h' => $new_height);
}
Sử dụng
Để sử dụng, bạn gọi lại hàm trên. Ví dụ mình cắt ảnh thumbnail.jpg
về kích thước 750px
và giảm chất lượng còn 80%
.
$filepath = 'img/thumbnail.jpg';
$image_size = resize_image($filepath, $filepath, 750, 0, 80);
Chúc các bạn thành công!
Không có bình luận.