|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板缩略图 PHP令咱们欣喜的就是在图形图像处置方面要忧于ASP,用GD库PHP就能够轻松的完成缩略图。这一篇文章咱们的目标就是用GD来生成缩略图,PHP可以把缩略图直接生成保送到阅读器也能够以文件的模式把其存储到硬盘傍边。
在生成缩略图的进程傍边咱们需求用到GD库傍边的几个函数:
getimagesize(string filename [,array var])),获得图象的信息,前往值是一人array,包含几项信息$var[0]----前往图象的width,$var[1]----前往height,[2]前往图象文件的type,[4]前往的是与<img src="">傍边的wdith,height有关的width="",height=""信息。
imageX(resource image)
imageY(resource image) 前往图象的宽和高
imagecopyresized(des img,src img,int des_x,int des_y,int src_x,int src_y,int des_w,int des_h,int src_w,int src_y) 复制并截取区域图象
imagecreatetruecolor(int width,int height) 创立一个真彩图
imagejpeg(resource image)
上面就是Code:
<?php
# Constants
define(IMAGE_BASE, '/var/www/html/mbailey/images');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);
# Get image location
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = IMAGE_BASE . "/$image_file";
# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
$img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
$img = @imagecreatefrompng($image_path);
# Only if your version of GD includes GIF support
} else if ($ext == 'gif') {
$img = @imagecreatefrompng($image_path);
}
# If an image was successfully loaded, test the image for size
if ($img) {
# Get image size and scale ratio
$width = imagesx($img);
$height = imagesy($img);
$scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);
# If the image is larger than the max shrink it
if ($scale < 1) {
$new_width = floor($scale*$width);
$new_height = floor($scale*$height);
# Create a new temporary image
$tmp_img = imagecreatetruecolor($new_width, $new_height);
# Copy and resize old image into new image
imagecopyresized($tmp_img, $img, 0, 0, 0, 0,
$new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
}
}
# Create error image if necessary
if (!$img) {
$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);
imagecolorallocate($img,0,0,0);
$c = imagecolorallocate($img,70,70,70);
imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}
# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>
咱们把下面的Code存储为test.php,然后经由过程test.php?image name的模式来会见,了局会让你欣喜的,由于在这里你看到了PHP的长处,它可让ASP相形见绌。
下面的这段代码傍边咱们经由过程end(explode(".",$image_path)来获得文件的扩大名,然而我感到仍是不睬想。如许是可以获得文件的类型的,由于end()函数会跳到本array的最初一个单位,然而假如咱们采取getimagesize()会获得更加壮大的专门针关于图象文件的类型。
本法式显示的缩略图是限制宽高都在150内,然后用min()函数来获得它们比值的最小值来盘算缩略图的宽和高,而且经由过程一系列的GD库函数来获得响应的信息,而且出现给阅读器,固然你也能够写到你所利用的硬盘傍边。
好了,这就是PHP的缩略图功效,人人感觉有甚么好的定见可以多多拍砖!完成一个功能齐全的动态站点 |
|