php 通过url 输出图片,从一个URL获取图片然后展示的PHP代码

这段代码演示了如何利用PHP的cURL库从指定URL获取图片,并根据允许的文件类型创建缩略图。如果无法获取图片,它将生成一个带有错误信息的替代图像。代码首先检查URL的有效性,然后通过cURL获取二进制图像数据,接着创建缩略图,最后根据图片类型设置正确的HTTP头并输出图像。
摘要由CSDN通过智能技术生成

这个代码使用 cURL来取得一张图片,然后在页面上展示它的缩略图。但不保存。

//$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);

}

?>

标签:

代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值