Tạo thumbnail cho hình ảnh bằng PHP
Hướng dẫn cách tạo thumbnail cho hình ảnh bằng PHP với sự hỗ trợ của thư viện GD. Mã PHP này giúp tạo ảnh thu nhỏ từ ảnh gốc với kích thước tùy chỉnh.
<?php
function createThumbnail($source_image_path, $thumbnail_path, $thumb_width) {
// Lấy thông tin ảnh gốc
list($width, $height, $image_type) = getimagesize($source_image_path);
// Tính toán kích thước thumbnail
$thumb_height = intval($height * $thumb_width / $width);
// Tạo ảnh thumbnail rỗng
$thumbnail = imagecreatetruecolor($thumb_width, $thumb_height);
// Tạo ảnh từ file gốc
switch ($image_type) {
case IMAGETYPE_GIF:
$source_image = imagecreatefromgif($source_image_path);
break;
case IMAGETYPE_JPEG:
$source_image = imagecreatefromjpeg($source_image_path);
break;
case IMAGETYPE_PNG:
$source_image = imagecreatefrompng($source_image_path);
break;
default:
return false;
}
// Resize ảnh gốc thành ảnh thumbnail
imagecopyresampled($thumbnail, $source_image, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height);
// Lưu ảnh thumbnail
switch ($image_type) {
case IMAGETYPE_GIF:
imagegif($thumbnail, $thumbnail_path);
break;
case IMAGETYPE_JPEG:
imagejpeg($thumbnail, $thumbnail_path, 90); // Chất lượng ảnh 90%
break;
case IMAGETYPE_PNG:
imagepng($thumbnail, $thumbnail_path);
break;
}
// Giải phóng bộ nhớ
imagedestroy($source_image);
imagedestroy($thumbnail);
return true;
}
// Sử dụng hàm để tạo thumbnail
$source_image = 'source_image.jpg';
$thumbnail_image = 'thumbnail_image.jpg';
$thumbnail_width = 150;
if (createThumbnail($source_image, $thumbnail_image, $thumbnail_width)) {
echo "Thumbnail đã được tạo thành công!";
} else {
echo "Không thể tạo thumbnail.";
}
?>
Giải thích chi tiết:
-
Lấy thông tin ảnh gốc:
getimagesize($source_image_path)
: Lấy kích thước và loại ảnh của file ảnh gốc.
-
Tính toán kích thước thumbnail:
$thumb_height = intval($height * $thumb_width / $width)
: Tính chiều cao tương ứng cho ảnh thumbnail dựa trên tỷ lệ của ảnh gốc.
-
Tạo ảnh thumbnail rỗng:
imagecreatetruecolor($thumb_width, $thumb_height)
: Tạo một canvas trống cho ảnh thumbnail với kích thước đã xác định.
-
Tạo ảnh từ file gốc:
- Sử dụng
imagecreatefromgif
,imagecreatefromjpeg
,imagecreatefrompng
để tạo ảnh từ file gốc, dựa trên loại ảnh (GIF, JPEG, PNG).
- Sử dụng
-
Resize ảnh gốc thành ảnh thumbnail:
imagecopyresampled()
: Chức năng resize và giữ chất lượng tốt nhất cho ảnh khi thu nhỏ.
-
Lưu ảnh thumbnail:
- Lưu ảnh dưới định dạng gốc (GIF, JPEG, PNG) bằng các hàm tương ứng
imagegif
,imagejpeg
, vàimagepng
.
- Lưu ảnh dưới định dạng gốc (GIF, JPEG, PNG) bằng các hàm tương ứng
-
Giải phóng bộ nhớ:
imagedestroy()
: Xóa dữ liệu ảnh gốc và ảnh thumbnail khỏi bộ nhớ để tránh làm đầy bộ nhớ.
-
Sử dụng hàm:
- Thực hiện việc tạo thumbnail từ file ảnh gốc và lưu nó vào một file mới.
Phiên bản PHP:
Mã này có thể chạy trên các phiên bản PHP từ 5.0 trở lên, yêu cầu extension GD để xử lý hình ảnh.