Resizing images với PHP
Trước đây mình đã giới thiệu với các bạn bài viết Tạo thumnail hình ảnh bằng PHP , tuy nhiên đoạn code mà mình giới thiệu sau đây sẽ có thêm nhiều lựa chọn hơn cho việc tạo các ảnh thumnail cho website của bạn. <?php class SimpleImage { var $image; var $image_type; function ...
Trước đây mình đã giới thiệu với các bạn bài viết Tạo thumnail hình ảnh bằng PHP , tuy nhiên đoạn code mà mình giới thiệu sau đây sẽ có thêm nhiều lựa chọn hơn cho việc tạo các ảnh thumnail cho website của bạn.
<?php class SimpleImage { var $image; var $image_type; function load($filename) { $image_info = getimagesize($filename); $this->image_type = $image_info[2]; if( $this->image_type == IMAGETYPE_JPEG ) { $this->image = imagecreatefromjpeg($filename); } elseif( $this->image_type == IMAGETYPE_GIF ) { $this->image = imagecreatefromgif($filename); } elseif( $this->image_type == IMAGETYPE_PNG ) { $this->image = imagecreatefrompng($filename); } } function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) { if( $image_type == IMAGETYPE_JPEG ) { imagejpeg($this->image,$filename,$compression); } elseif( $image_type == IMAGETYPE_GIF ) { imagegif($this->image,$filename); } elseif( $image_type == IMAGETYPE_PNG ) { imagepng($this->image,$filename); } if( $permissions != null) { chmod($filename,$permissions); } } function output($image_type=IMAGETYPE_JPEG) { if( $image_type == IMAGETYPE_JPEG ) { imagejpeg($this->image); } elseif( $image_type == IMAGETYPE_GIF ) { imagegif($this->image); } elseif( $image_type == IMAGETYPE_PNG ) { imagepng($this->image); } } function getWidth() { return imagesx($this->image); } function getHeight() { return imagesy($this->image); } function resizeToHeight($height) { $ratio = $height / $this->getHeight(); $awidth = $this->getWidth() * $ratio; $this->resize($awidth,$height); } function resizeToWidth($awidth) { $ratio = $awidth / $this->getWidth(); $height = $this->getheight() * $ratio; $this->resize($awidth,$height); } function scale($scale) { $awidth = $this->getWidth() * $scale/100; $height = $this->getheight() * $scale/100; $this->resize($awidth,$height); } function resize($awidth,$height) { $new_image = imagecreatetruecolor($awidth, $height); imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $awidth, $height, $this->getWidth(), $this->getHeight()); $this->image = $new_image; } } ?>
Cách sử dụng :
Các bạn save đoạn code bên trên là SimpleImage.php và xem đoạn code ví dụ minh họa sau để có thể hiểu rõ hơn.
Trong ví dụ này chúng ta sẽ load ảnh nguồn là picture.jpg và thu nhỏ nó lại với kích thước ngang là 250 pixel và cao là 400 pixel
<?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->resize(250,400); $image->save('picture2.jpg'); ?>
Nếu bạn muốn resize với một bề ngang được chỉ định đúng kích thước đưa ra thì sử dụng như sau :
<?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->resizeToWidth(250); $image->save('picture2.jpg'); ?>
Còn nếu bạn muốn scale hình với phần trăm chỉ định thì đoạn code sau sẽ resize tấm hình gốc chỉ bằng 50% so với kích thước ban đầu
include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->scale(50); $image->save('picture2.jpg');
Và dĩ nhiên bạn cũng có thể tạo ra nhiều phiên bản thu nhỏ từ một hình gốc với nhiều kích thước khác nhau như sau:
include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->resizeToHeight(500); $image->save('picture2.jpg'); $image->resizeToHeight(200); $image->save('picture3.jpg');
Hàm output cho phép bạn xuất hình ảnh trực tiếp ra trình duyệt mà không cần phải save file, điều này rất hữu ích cho việc tạo ra các hình ảnh thumnail mà không cần phải lưu trữ
header('Content-Type: image/jpeg'); include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->resizeToWidth(150); $image->output();
Và đây là đoạn code sẽ tạo ra ảnh thumnail ngay khi bạn upload hình gốc
<?php if( isset($_POST['submit']) ) { include('SimpleImage.php'); $image = new SimpleImage(); $image->load($_FILES['uploaded_image']['tmp_name']); $image->resizeToWidth(150); $image->output(); } else { ?> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="uploaded_image" /> <input type="submit" name="submit" value="Upload" /> </form> <?php } ?>
Hy vọng với bài viết này sẽ giúp cho các bạn có thêm một lựa chọn cho việc tạo ra thumnail cho web hay blog của bạn. Chúc các bạn thành công !
Chuyên Mục: PHP
Bài viết được đăng bởi webmaster
-
Nguyễn Văn Hưởng