Hàm getimagesize() trong PHP
Trần Thị Vân
- 1156
- 06/08/2025
Chức năng của Hàm getimagesize() trong PHP
Hàm getimagesize() trong PHP dùng để lấy thông tin chiều rộng chiều cao theo px của hình ảnh, loại hình ảnh và thông tin khác về hình ảnh.
Cú pháp của Hàm getimagesize() trong PHP
$biến_mảng = getimagesize("đường_dẫn_file");
đường_dẫn_file: Đường dẫn tới file hình ảnh (Ví dụ: upload/tinblog/ham-getimagesize-trong-php.jpg)
$biến_mảng: Kết quả trả về mảng chứa các thông tin về hình ảnh (Ví dụ: $biến_mảng[0] là chiều rộng, $biến_mảng[1] là chiều cao,....)
Code Hàm getimagesize() trong PHP
<?php
$filename = "upload/tinblog/ham-getimagesize-trong-php.jpg";
$chfile = getimagesize($filename);
echo "Chiều rộng file hình: ".$chfile[0]." px <br>"; //Kết quả: 526 px
echo "Chiều cao file hình: ".$chfile[1]." px <br>"; //Kết quả: 274 px
echo "Loại hình: <br>";
echo "".loaihinh($chfile[2])."<br>"; //Kết quả: .JPG
echo "Thẻ HTML: ".$chfile[3]." px <br>"; //Kết quả: width="526" height="274" px
function loaihinh($bien){
if($bien==1){
echo ".GIF";
}
if($bien==2){
echo ".JPG";
}
if($bien==3){
echo ".PNG";
}
if($bien==6){
echo ".BMP";
}
if($bien==15){
echo ".WBMP";
}
if($bien==16){
echo ".XBM";
}
if($bien==17){
echo ".TIFF (byte-order little endian)";
}
if($bien==18){
echo ".TIFF (byte-order big endian)";
}
if($bien==19){
echo ".JP2";
}
if($bien==20){
echo ".PSD";
}
if($bien==21){
echo ".WEBP";
}
if($bien==22){
echo ".XPM";
}
}
?>
Kết quả:
Chiều rộng file hình: 526 px
Chiều cao file hình: 274 px
Loại hình:
.JPG
Thẻ HTML: width="526" height="274" px
Cách sử dụng getimagesize() hiệu quả trong PHP
Trong các ứng dụng PHP có chức năng tải và xử lý hình ảnh, việc gọi getimagesize() không chỉ nhằm lấy chiều rộng và chiều cao. Kết quả trả về còn có thể được dùng để xác định định dạng, kiểm tra dữ liệu hình ảnh và quyết định cách xử lý tiếp theo.
Để sử dụng hàm an toàn, nên kiểm tra kết quả trước khi truy cập từng phần tử. Cách này giúp chương trình tránh phát sinh lỗi khi đường dẫn không hợp lệ hoặc PHP không thể đọc được hình ảnh.
Kiểm tra kết quả trả về từ getimagesize()
Khi đọc hình ảnh thành công, getimagesize() trả về một mảng chứa thông tin về kích thước và loại ảnh. Ngược lại, hàm có thể trả về false. Vì vậy, nên kiểm tra kết quả ngay sau khi gọi hàm thay vì sử dụng trực tiếp các phần tử trong mảng.
<?php
$info = getimagesize('images/photo.jpg');
if ($info !== false) {
echo 'Ảnh hợp lệ';
} else {
echo 'Không thể đọc thông tin hình ảnh';
}
?>
Cách kiểm tra này đặc biệt hữu ích khi đường dẫn được lấy từ dữ liệu người dùng hoặc từ một file tải lên. Chương trình có thể dừng quá trình xử lý ngay khi dữ liệu không đáp ứng yêu cầu.
Lấy thông tin định dạng và kích thước hình ảnh
Sau khi nhận được kết quả hợp lệ, có thể sử dụng các giá trị trong mảng để biết kích thước và loại hình ảnh. Thông tin này phù hợp cho các thao tác như giới hạn chiều rộng, chiều cao hoặc lựa chọn cách xử lý ảnh trước khi lưu.
<?php
$info = getimagesize('images/photo.jpg');
if ($info !== false) {
$width = $info[0];
$height = $info[1];
$mime = $info['mime'];
echo "Kích thước: {$width} x {$height}";
echo "Định dạng: {$mime}";
}
?>
Trong thực tế, nên ưu tiên kiểm tra MIME type cùng kích thước thay vì chỉ dựa vào phần mở rộng của tên file. Ví dụ, một file có tên kết thúc bằng .jpg chưa đủ để khẳng định dữ liệu bên trong thực sự là hình ảnh JPEG.
Xử lý khi getimagesize() không đọc được hình ảnh
Không nên giả định mọi đường dẫn truyền vào getimagesize() đều cho kết quả hợp lệ. File có thể không tồn tại, đường dẫn sai, dữ liệu không phải hình ảnh hoặc hình ảnh không được PHP đọc thành công. Khi đó, cần xử lý trường hợp thất bại trước khi lấy thông tin từ kết quả.
<?php
$info = getimagesize($file);
if ($info === false) {
echo 'File không phải hình ảnh hợp lệ hoặc không thể đọc được';
exit;
}
if ($info[0] < 300 || $info[1] < 200) {
echo 'Kích thước hình ảnh không đạt yêu cầu';
exit;
}
echo 'Hình ảnh có thể tiếp tục được xử lý';
?>
Cách làm này giúp quy trình xử lý ảnh rõ ràng hơn: xác nhận dữ liệu có thể đọc, kiểm tra các điều kiện cần thiết rồi mới thực hiện bước tiếp theo. Với chức năng upload ảnh, đây cũng là một lớp kiểm tra hữu ích trước khi chương trình lưu hoặc xử lý file.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm getimagesize() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *