CODE <?php
ini_set('memory_limit','64M');
$site_config['document_root'] = $_SERVER['DOCUMENT_ROOT'];
$thumb_size = 128;
$site_config['absolute_uri'] = str_replace('///', '//', str_replace('thumb.php?'. $_SERVER['QUERY_STRING'], '', $_SERVER['REQUEST_URI']));
$site_config['path_thumbnail'] = $site_config['absolute_uri']. 'site/'. $_GET['p']. '/cache/';
$image_error = $site_config['document_root']. $site_config['absolute_uri']. 'site/default.jpg';
$thumb_size_x = 0;
$thumb_size_y = 0;
if (@$_GET["quality"]<>0) {
$quality = $_GET["quality"];
} else {
$quality = 80;
}
if (@$_GET["size"]<>0) {
$thumb_size = intval($_GET["size"]);
}
if (intval(@$_GET["sizex"])>0) {
$thumb_size_x = intval($_GET["sizex"]);
if (intval(@$_GET["sizey"])>0) {
$thumb_size_y = intval($_GET["sizey"]);
} else {
$thumb_size_y = $thumb_size_x;
}
}
if (file_exists($_GET['file'])) {
$filename = $_GET['file'];
} else {
$filename = str_replace('//','/',$site_config['document_root'].$site_config['absolute_uri'].'/'.$_GET["file"]);
}
if (substr_count($filename, "http://")>0) {
$filename = str_replace($site_config['document_root'].$site_config['absolute_uri'].'/','',$filename);
}
$filename = str_replace("'","'",$filename);
$filename = rtrim($filename);
$filename = str_replace("//","/",$filename);
$fileextension = substr($filename, strrpos ($filename, ".") + 1);
$cache_file = str_replace('//','/',$site_config['document_root'].$site_config['path_thumbnail'].md5($filename.@$thumb_size.@$thumb_size_x.@$thumb_size_y.@$quality).'.'.$fileextension);
if (@$_GET['nocache']==1) {
if (file_exists($cache_file)) {
unlink($cache_file);
}
}
if ((file_exists($cache_file)) && (@filemtime($cache_file)>@filemtime($filename))) {
header('Content-type: image/'.$fileextension);
header("Expires: Mon, 26 Jul 2030 05:00:00 GMT");
header('Content-Disposition: inline; filename='.str_replace('/','',md5($filename.$thumb_size.$thumb_size_x.$thumb_size_y.$quality).'.'.$fileextension));
echo (join('', file( $cache_file )));
exit;
}
$ver=intval(str_replace(".","",phpversion()));
if ($ver>=430) {
$gd_version=@gd_info();
}
if (!$image_type_arr = @getimagesize($filename)) {
header('Content-type: image/png');
if(@$_GET['noerror']) {
exit;
} else {
echo (join('', file( $site_config['document_root'].$image_error )));
exit;
}
}
$image_type=$image_type_arr[2];
switch ($image_type) {
case 2: # JPG
if (!$image = @imagecreatefromjpeg ($filename)) {
$image = imagecreatefrompng ($image_error);
$file_type="png";
if (file_exists($cache_file)) {
unlink($cache_file);
}
}
break;
case 3: # PNG
if (!$image = @imagecreatefrompng ($filename)) {
$image = imagecreatefrompng ($image_error);
$file_type="png";
if (file_exists($cache_file)) {
unlink($cache_file);
}
}
break;
case 1: # GIF
if (!$image = @imagecreatefromgif ($filename)) {
$image = imagecreatefrompng ($image_error);
$file_type="png";
if (file_exists($cache_file)) {
unlink($cache_file);
}
}
break;
default:
$image = imagecreatefrompng($image_error);
break;
}
$image_width = imagesx($image);
$image_height = imagesy($image);
if (@$thumb_size_x>0) {
$thumb_width = $thumb_size_x;
$factor = $image_width/$thumb_size_x;
$thumb_height = intval($image_height / $factor);
if ($thumb_height>$thumb_size_y)
{
$thumb_height = $thumb_size_y;
$factor = $image_height/$thumb_size_y;
$thumb_width = intval($image_width / $factor);
}
} else {
$thumb_width = $thumb_size;
$factor = $image_width/$thumb_size;
$thumb_height = intval($image_height / $factor);
if ($thumb_height>$thumb_size)
{
$thumb_height = $thumb_size;
$factor = $image_height/$thumb_size;
$thumb_width = intval($image_width / $factor);
}
}
if ($image_width < 4000) {
if (substr_count(strtolower($gd_version['GD Version']), "2.")>0) {
$thumbnail = ImageCreateTrueColor($thumb_width, $thumb_height);
imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);
} else {
$thumbnail = imagecreate($thumb_width, $thumb_height);
imagecopyresized($thumbnail, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);
}
} else {
if (substr_count(strtolower($gd_version['GD Version']), "2.")>0) {
$thumbnail = ImageCreateTrueColor($thumb_width, $thumb_height);
imagecopyresized($thumbnail, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);
} else {
$thumbnail = imagecreate($thumb_width, $thumb_height);
imagecopyresized($thumbnail, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);
}
}
if (@$_GET['tag']<>"") {
$font=1;
$string= $_GET['tag'];
$white = imagecolorallocate ($thumbnail, 255, 255, 255);
$black = imagecolorallocate ($thumbnail, 0, 0, 0);
imagestring ($thumbnail, $font, 3, $thumb_height-9, $string, $black);
imagestring ($thumbnail, $font, 2, $thumb_height-10, $string, $white);
}
switch ($image_type) {
case 2: # JPG
header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename='.str_replace('/','',md5($filename.$thumb_size.$thumb_size_x.$thumb_size_y.$quality).'.jpeg'));
@imagejpeg($thumbnail,$cache_file, $quality);
imagejpeg($thumbnail,'',$quality);
break;
case 3: # PNG
header('Content-type: image/png');
header('Content-Disposition: inline; filename='.str_replace('/','',md5($filename.$thumb_size.$thumb_size_x.$thumb_size_y.$quality).'.png'));
@imagepng($thumbnail,$cache_file);
imagepng($thumbnail);
break;
case 1: # GIF
if (function_exists('imagegif')) {
header('Content-type: image/gif');
header('Content-Disposition: inline; filename='.str_replace('/','',md5($filename.$thumb_size.$thumb_size_x.$thumb_size_y.$quality).'.gif'));
@imagegif($thumbnail,$cache_file);
imagegif($thumbnail);
} else {
header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename='.str_replace('/','',md5($filename.$thumb_size.$thumb_size_x.$thumb_size_y.$quality).'.jpg'));
@imagejpeg($thumbnail,$cache_file);
imagejpeg($thumbnail);
}
break;
}
imagedestroy ($image);
imagedestroy ($thumbnail);
?>
Cách dùng
Copy code trên và đặt tên là image.php
<img src="image.php?file={photo}&sizex=100&sizey=100&quality=100">
{photo} = Link hình ảnh
sizex = Chiều rộng
sizey = Chiều cao
quality = Chất lượng ảnh |