Resizing images với PHP

php code, php tips, Resizing images, thu thuat php, thumnail

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();

$width = $this->getWidth() * $ratio;

$this->resize($width,$height);

}



function resizeToWidth($width) {

$ratio = $width / $this->getWidth();

$height = $this->getheight() * $ratio;

$this->resize($width,$height);

}



function scale($scale) {

$width = $this->getWidth() * $scale/100;

$height = $this->getheight() * $scale/100;

$this->resize($width,$height);

}



function resize($width,$height) {

$new_image = imagecreatetruecolor($width, $height);

imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $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.

 

 HỖ TRỢ TRỰC TUYẾN