VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php创建高清缩略图详细使用方法

1.用imagecreatetruecolor和imagecopyresampled函数分别取代imagecreate和imagecopyresized.

2.给imagejpeg的第三个参数带上100(例:imagejpeg($ni,$tofile,100))

imagecreatetruecolor -- 新建一个真彩色图像

说明:resource imagecreatetruecolor ( int x_size, int y_size )

imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像.

  1. header ("content-type: image/png"); 
  2. $im = @imagecreatetruecolor (50, 100) 
  3.      or die ("cannot initialize new gd image stream"); 
  4. $text_color = imagecolorallocate ($im, 233, 14, 91); 
  5. imagestring ($im, 1, 5, 5,  "a simple text string"$text_color); 
  6. imagepng ($im);//开源代码phpfensi.com 
  7. imagedestroy ($im); 

如果使用普通的imagecreate()函数将造成图片质量失真的情况,从网上搜了一下解决办法,方法是用imagecreateruecolor()函数替换imagecreate()函数.

  1. function createpreview($img,$name,$path,$maxwidth,$maxheight,$quality){//图片,保存名称,保存路径,最大宽,最大高,质量 
  2.  $widthratio=0; 
  3.  $heightratio=0; 
  4.  $width=imagesx($img); 
  5.  $height=imagesy($img); 
  6.  //开始计算缩小比例 
  7.  if($width>$maxwidth||$height>$maxheight){ 
  8.   if($width>$maxwidth){ 
  9.    $widthratio=$maxwidth/$width
  10.   } 
  11.   if($height>$maxheight){ 
  12.    $heightratio=$maxheight/$height
  13.   } 
  14.   if($widthratio>0&&$heightratio>0){ 
  15.    if($widthratio<$heightratio){ 
  16.     $ratio=$widthratio
  17.    }else
  18.     $ratio=$heightratio
  19.    } 
  20.   }elseif($widthratio>0){ 
  21.    $ratio=$widthratio
  22.   }elseif($heightratio>0){ 
  23.    $ratio=$heightratio
  24.   } 
  25.   //根据得出的比例,重新计算缩略图的宽和高 
  26.   $newwidth=$ratio*$width
  27.   $newheight=$ratio*$height
  28.   $newimg=imagecreatetruecolor($newwidth,$newheight); // 创建目标图 
  29.   imagecopyresized($newimg,$img,0,0,0,0,$newwidth,$newheight,$width,$height); 
  30.   imagejpeg($newimg,$path."s_".$name,$quality); 
  31.   imagedestroy($newimg); 
  32.  }else
  33.   imagejpeg($img,$path."s_".$name,$quality); 
  34.  }//开源代码phpfensi.com 

imagecopyresamples(),其像素插值算法得到的图像边缘比较平滑,质量较好,但该函数的速度比 imagecopyresized() 慢.

 

原文链接:http://www.phpfensi.com/php/20140819/4452.html


相关教程