什么是艺术?

缩略图片的处理[1]

上一篇 / 下一篇  2007-12-05 21:17:19 / 个人分类:总结

在web开发过程中缩略图已经是得到了广泛的应用,所以我觉得我很有必要弄清楚其原理!

要想在php中使用缩略图的功能必须打开GD2,就是在php.ini中把extension=php_gd2.dll前的那个分号去掉,之后重新启动web服务器就可以用啦!

废话不多说马上开始!

缩略图的功能就是把一张大的图片变成成一张小的图片,这样图片容易加载,网页显示速度快,但是又不能是图片的内容变形!!也就是要等比例缩放!

创建缩略图第一步就是要打开源图片。

<?php
$im = imagecreatefromjpeg('test.jpg');
if($im == false){
   die("不能打开jpg图片!");
} else{
   echo "图片已经打开!";
}
?>
这只是一个简单的测试函数。 请大家自己看看手册,理解函数是什么意思。下面是个通用打开图像函数。
/**
*函数名称: open_image
*参数:  $file -- 图片文件的路径名
*函数说明: 判断打开的文件是否图片是否合法
*返回:     成功返回资源类型,失败返回 false
*/
 function open_image($file) {
  $im = @imagecreatefromjpeg($file);   //jpeg格式
  if($im !== false)  return $im;
  $im = @imagecreatefromgif($file);    //gif格式
  if($im !== false) return $im;
  $im = @imagecreatefrompng($file);    //png格式
  if($im !== false) return $im;
  $im = @imagecreatefromgd($file);     //gd生成的文件
  if($im !== false) return $im;
  $im = @imagecreatefromgd2($file);    //gd2生成的文件
  if($im !== false) return $im;
  $im = @imagecreatefromwbmp($file);   //wbmp手机格式图片
  if($im !== false) return $im;
  $im = @imagecreatefromxbm($file);    //xbm格式文件
  if($im !== false) return $im;
  $im = @imagecreatefromxpm($file);    //xpm格式文件
  if($im !==false) return $im;
  $im = @imagecreatefromstring($file);  //尝试从字符串中建立一个图片文件
  if($im !==false) return $im;
  return false;
 }

下面是缩略图函数呵呵! 不清楚的地方可以留言问我!
/**
*函数名称: imageResize
*参数:  $srcFile-- 图片文件的路径名$tow--缩略图宽$toh--缩略图高,$tofile--缩略图路径和名称
*函数说明:生成缩略图
*
*/

function imageResize($srcFile, $tow, $toh, $tofile){
 
 $im = open_image($srcFile);
  

 $wh_rate = $tow/$toh;           //缩略图宽高比
 $srcw = imagesx($im);           //源图片的宽
 $srch = imagesy($im);           //源图片的高
 $start = (int) abs(($srcw-$srch)/2);

 $src_pix = $srcw/$srch>$wh_rate?$srch:$srcw;

 $tox =  (int)(($srcw - $tow)/2);            //缩略图的x坐标
 $toy =  (int)(($srch - $toh)/2);    //缩略图的y坐标
 if(function_exists("imagecreatetruecolor")) {
  $ni = imagecreatetruecolor($tow, $toh);
  if($ni) {
   imagecopyresampled($ni, $im, 0, 0, $wh_rate>=1?$start:0,  $wh_rate>=1?0:$start, $tow, $toh, $src_pix,$src_pix);
  } else {
   $ni = imagecreate($tow, $toh);
   imagecopyresampled($ni, $im, 0, 0, $wh_rate>=1?$start:0,  $wh_rate>=1?0:$start, $tow, $toh, $src_pix,$src_pix);
  }
 } else {
   $ni = imagecreate($tow, $toh);
   imagecopyresampled($ni, $im, 0, 0, $wh_rate>=1?$start:0,  $wh_rate>=1?0:$start, $tow, $toh, $src_pix,$src_pix); 
 }

 imagegif($ni, $tofile);
 imagedestroy($ni);
 imagedestroy($im);
}


TAG: 总结

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 555
  • 日志数: 5
  • 图片数: 2
  • 建立时间: 2007-11-13
  • 更新时间: 2007-12-05

RSS订阅

Open Toolbar