Nếu bạn cần Resize và Crop số lượng lớn hình ảnh, bài viết này có thể giúp bạn.
Để thực hành bài viết này, các bạn cần:
- Cài đặt localhost với XAMPP.
- Kiến thức PHP căn bản.
Đầu tiên, bạn tạo thư mục resize
trong htdocs
như sau:
resize/
├── dir/
├── exp/
├── index.php
Tại tập tin index.php
.
<?php
function resize_crop_image ($max_width, $max_height, $source_file, $dst_dir, $quality = 80) {
$imgsize = getimagesize($source_file);
$width = $imgsize[0];
$height = $imgsize[1];
$mime = $imgsize['mime'];
switch ($mime) {
case 'image/gif':
$image_create = "imagecreatefromgif";
$image = "imagegif";
break;
case 'image/png':
$image_create = "imagecreatefrompng";
$image = "imagepng";
$quality = 7;
break;
case 'image/jpeg':
$image_create = "imagecreatefromjpeg";
$image = "imagejpeg";
$quality = 80;
break;
default:
return false;
break;
}
$dst_img = imagecreatetruecolor($max_width, $max_height);
$src_img = $image_create($source_file);
$width_new = $height * $max_width / $max_height;
$height_new = $width * $max_height / $max_width;
if ($width_new > $width) {
$h_point = (($height - $height_new) / 2);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, $h_point, $max_width, $max_height, $width, $height_new);
} else {
$w_point = (($width - $width_new) / 2);
imagecopyresampled($dst_img, $src_img, 0, 0, $w_point, 0, $max_width, $max_height, $width_new, $height);
}
$image ($dst_img, $dst_dir, $quality);
if ($dst_img) imagedestroy($dst_img);
if ($src_img) imagedestroy($src_img);
}
$files = scandir('./dir');
if ($files) {
for ($i = 2; $i < count($files); $i++) {
$filePath = './dir/' . $files[$i];
$expPath = './exp/' . $files[$i];
resize_crop_image(450, 400, $filePath, $expPath, 80);
}
}
echo 'ok';
?>
Ví dụ trên sẽ cắt hình theo kích thước 450x400
, với chất lượng ảnh lưu là 80%
. Các bạn có thể thay đổi thông số này theo nhu cầu.
Để sử dụng, các bạn chép hình vào thư mục dir
, sau đó truy cập http://localhost/resize/
. Hình đã xử lý sẽ được xuất sang thư mục exp
.
Chúc các bạn thành công!
Không có bình luận.