Bước 1: Tạo file resize_image.php với nội dung sau:
<?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);
?>
Bước 2. Sử dụng:
Gắn đường link ảnh trên web của bạn, sau đó thay đổi các thông số images theo ý muốn của bạn.
<img src="resize_image.php?file={photo}&sizex=100&sizey=100&quality=100">
{photo} là link hình
sizex là chiều rộng của hình
sizey là chiều cao của hình
quality là chất lượng hình
Chúc bạn thành công!
Xem thêm:
- Cách tự động chuyển trang ( Auto Redirect ) bằng HTTP Status Code 301 hoặc 302
- Lấy đường dẫn URL và Title trang hiện tại bằng Javascript hoặc jQuery
- Lấy đường dẫn URL của trang hiện tại bằng PHP
- Tài liệu lập trình PHP và MYSQL bằng Tiếng Việt miễn phí
- Ebook căn bản lập trình PHP và MySQL bằng tiếng Việt
 






0 nhận xét:
Post a Comment