Cách lấy và hiển thị ảnh từ URL bằng PHP

26/12/2014

Trước khi bắt đầu bài viết, mình xin chúc các bạn có một mùa Giáng Sinh vui vẻ và đầm ấm ,hạnh phúc bên gia đình và người thân của mình.  Trong bài viết này, mình xin chia sẻ cho các bạn một đoạn code ngắn được viết bằng PHP , đoạn script này sẽ giúp các bạn lấy ảnh trực tiếp từ URL và hiển thị ảnh thumnail trên trang web mà không cần phải tải về.

Cách lấy và hiển thị ảnh từ URL bằng PHP

displayImg.php

<?php 
//$url = "http://share.meebo.com/content/katy_perry/wallpapers/3.jpg"; 
$url = $_GET['url']; 

$url = str_replace("http:/","http://",$url); 

$allowed = array('jpg','gif','png'); 
$pos = strrpos($_GET['url'], "."); 
$str = substr($_GET['url'],($pos + 1)); 

$ch = curl_init(); 
$timeout = 0; 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 

// Getting binary data 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 

$image = curl_exec($ch); 
curl_close($ch); 
// output to browser 
$im = @imagecreatefromstring($image); 

$tw = @imagesx($im); 
if(!$tw){ 
    // Font directory + font name 
    $font = '../../fonts/Austrise.ttf'; 
    // Size of the font 
    $fontSize = 18; 
    // Height of the image 
    $height = 32; 
    // Width of the image 
    $width = 250; 
    // Text 
    $str = 'Couldn\'t get image.'; 
    $img_handle = imagecreate ($width, $height) or die ("Cannot Create image"); 
    // Set the Background Color RGB 
    $backColor = imagecolorallocate($img_handle, 255, 255, 255); 
    // Set the Text Color RGB 
    $txtColor = imagecolorallocate($img_handle, 20, 92, 137);  
    $textbox = imagettfbbox($fontSize, 0, $font, $str) or die('Error in imagettfbbox function'); 
    $x = ($width - $textbox[4])/2; 
    $y = ($height - $textbox[5])/2; 
    imagettftext($img_handle, $fontSize, 0, $x, $y, $txtColor, $font , $str) or die('Error in imagettftext function'); 
    header('Content-Type: image/jpeg'); 
    imagejpeg($img_handle,NULL,100); 
    imagedestroy($img_handle);  
}else{ 
    if($str == 'jpg' || $str == 'jpeg') 
        header("Content-type: image/jpeg"); 
    if($str == 'gif') 
        header("Content-type: image/gif"); 
    if($str == 'png') 
        header("Content-type: image/png"); 
    $th = imagesy($im); 
    $thumbWidth = 200; 
    if($tw <= $thumbWidth){ 
        $thumbWidth = $tw; 
    } 
    $thumbHeight = $th * ($thumbWidth / $tw); 
    $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight); 
    if($str == 'gif'){ 
        $colorTransparent = imagecolortransparent($im); 
        imagefill($thumbImg, 0, 0, $colorTransparent); 
        imagecolortransparent($thumbImg, $colorTransparent); 
    } 
    if($str == 'png'){ 
        imagealphablending($thumbImg, false); 
        imagesavealpha($thumbImg,true); 
        $transparent = imagecolorallocatealpha($thumbImg, 255, 255, 255, 127); 
        imagefilledrectangle($thumbImg, 0, 0, $thumbWidth, $thumbHeight, $transparent); 
    } 
    imagecopyresampled($thumbImg, $im, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $tw, $th); 


    if($str == 'jpg' || $str == 'jpeg'){ 
        imagejpeg($thumbImg, NULL, 100); 
    } 
    if($str == 'gif'){ 
        imagegif($thumbImg); 
    } 
    if($str == 'png'){ 
        imagealphablending($thumbImg,TRUE); 
        imagepng($thumbImg, NULL, 9, PNG_ALL_FILTERS); 
    } 
         
    imagedestroy($thumbImg); 
} 
?>

Lấy ảnh trực tiếp :

displayImg.php?url=http://thuthuatweb.net/images/image.jpg

Lấy ảnh sử dụng Tag :

<img src="displayImg.php?url=http://thuthuatweb.net/images/image.jpg" />

Mình hy vọng với đoạn script này sẽ giúp các bạn nâng cao khả năng lập trình , cũng như áp dụng được nhiều vào trong các dự án web của mình.

Chúc các bạn thành công !

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !