×

php图片缩略图函数

php图片缩略图函数(php缩放图片)

admin admin 发表于2023-04-07 02:07:09 浏览63 评论0

抢沙发发表评论

本文目录一览:

php创建缩略图问题

可能你找的这些处理函数(类)功能比较强大,所以会有复杂的感觉。如果只是单纯的放大缩小,使用 GD 库,还是比较简单的。php 手册里有一个例子,使用 imagecopyresized 函数。完整的例子如下,你也可以直接看手册获取更多的信息,希望对你有帮助。

// PHP 手册 imagecopyresized 函数的例子

// File and new size

$filename = 'test.jpg';

$percent = 0.5;

// Content type

header('Content-Type: image/jpeg');

// Get new sizes

list($width, $height) = getimagesize($filename);

$newwidth = $width * $percent;

$newheight = $height * $percent;

// Load

$thumb = imagecreatetruecolor($newwidth, $newheight);

$source = imagecreatefromjpeg($filename);

// Resize

imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output

imagejpeg($thumb);

PHP缩略图组件的使用?

不需要。 直接IMG控制就行. img src="" width=200 height=200 就可以了。

php怎么生成缩略图

给你个函数吧

 // *****生成缩略图*****

     // 只考虑jpg,png,gif格式

     // $srcImgPath 源图象路径

     // $targetImgPath 目标图象路径

     // $targetW 目标图象宽度

     // $targetH 目标图象高度

     function makeThumbnail($srcImgPath,$targetImgPath,$targetW,$targetH)

     {

         $imgSize = GetImageSize($srcImgPath);

         $imgType = $imgSize[2];

         //@ 使函数不向页面输出错误信息

         switch ($imgType)

        {

            case 1:

                $srcImg = @ImageCreateFromGIF($srcImgPath);

                break;

            case 2:

                $srcImg = @ImageCreateFromJpeg($srcImgPath);

                break;

            case 3:

                $srcImg = @ImageCreateFromPNG($srcImgPath);

                break;

        }

         //取源图象的宽高

        $srcW = ImageSX($srcImg);

        $srcH = ImageSY($srcImg);

        if($srcW$targetW || $srcH$targetH)

        {

            $targetX = 0;

            $targetY = 0;

            if ($srcW  $srcH)

            {

                $finaW=$targetW;

                $finalH=round($srcH*$finaW/$srcW);

                $targetY=floor(($targetH-$finalH)/2);

            }

            else

            {

                $finalH=$targetH;

                $finaW=round($srcW*$finalH/$srcH);

                $targetX=floor(($targetW-$finaW)/2);

            }

              //function_exists 检查函数是否已定义

              //ImageCreateTrueColor 本函数需要GD2.0.1或更高版本

            if(function_exists("ImageCreateTrueColor"))

            {

                $targetImg=ImageCreateTrueColor($targetW,$targetH);

            }

            else

              {

                $targetImg=ImageCreate($targetW,$targetH);

            }

            $targetX=($targetX0)?0:$targetX;

            $targetY=($targetX0)?0:$targetY;

            $targetX=($targetX($targetW/2))?floor($targetW/2):$targetX;

            $targetY=($targetY($targetH/2))?floor($targetH/2):$targetY;

              //背景白色

            $white = ImageColorAllocate($targetImg, 255,255,255);

            ImageFilledRectangle($targetImg,0,0,$targetW,$targetH,$white);

            /*

                   PHP的GD扩展提供了两个函数来缩放图象:

                   ImageCopyResized 在所有GD版本中有效,其缩放图象的算法比较粗糙,可能会导致图象边缘的锯齿。

                   ImageCopyResampled 需要GD2.0.1或更高版本,其像素插值算法得到的图象边缘比较平滑,

                                                             该函数的速度比ImageCopyResized慢。

            */

            if(function_exists("ImageCopyResampled"))

            {

                ImageCopyResampled($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);-php图片缩略图函数

            }

            else

            {

                ImageCopyResized($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);-php图片缩略图函数

            }

              switch ($imgType) {

                case 1:

                    ImageGIF($targetImg,$targetImgPath);

                    break;

                case 2:

                    ImageJpeg($targetImg,$targetImgPath);

                    break;

                case 3:

                    ImagePNG($targetImg,$targetImgPath);

                    break;

            }

            ImageDestroy($srcImg);

            ImageDestroy($targetImg);

        }

         else //不超出指定宽高则直接复制

        {

            copy($srcImgPath,$targetImgPath);

            ImageDestroy($srcImg);

        }

     }

代码已经测试,成功运行!

用下面的php缩略图函数,对某一些jpg图片无法生成缩略图,而其他却可以,这是为啥?

注意

1:应在判断好图片后准备作输出或保存再使用方法imagecreatefromjpeg

2:imagesy($src_img);请考虑使用 list($width,$height) = getimagesize($src_img);

3:$ratio_h=1.0 * $new_height / $h;//n=未知数 ,1乘以任何的n,结果都还是n,为何要做这?

4:你的程序是接收外部输入的尺寸,这会导致输出或保存的图片扭曲、变形

5:$ratio=1.0;

if($ratio_w =1 $ratio_h = 1) {

if($ratio_w $ratio_h){}else {}//注意4:考虑使用三元算法

6:$inter_h=(int) ($new_height /$ratio);//PHP对数据类型不像Java那样敏感,不必使用int强行转换

7:处理好后记得销毁图片imagedestroy();

最后:你可以说明下你要的效果

谁有php批量处理图片、图片生成缩略图、图片添加水印的函数?

//批量处理图片、图片生成缩略图、图片添加水印

$dir = opendir (dirname(__FILE__));

while (!!$_file = readdir($dir)){

 list($filesname,$kzm)=explode(".",$_file);//获取扩展名

 if($kzm=="gif" or $kzm=="jpg" or $kzm=="JPG" or $kzm=="png") {

  if(!makethumb("$_file","120","120","100")){

   echo '执行成功!';

  }else{

   echo '执行失败!';

  }

 }

}

closedir($dir);

/**

 * 处理缩略图并添加水印函数

 * @access publiuc

 * @param $srcFile-----------图片文件名

 * @param $dstFile-----------另存的文件名

 * @param $dstW-------------图片保存的宽度

 * @param $dstH--------------图片保存的高度

 * @param $rate---------------图片保存的品质

 * @param $markwords-----水印文字

 * @param $markimage-----水印图片

 * @param 使用方法 makethumb("a.jpg","b.jpg","120","120","100");

 */

function makethumb($srcFile/*,$dstFile*/,$dstW,$dstH,$rate=100/*,$markwords=null,$markimage=null*/) {-php图片缩略图函数

 

 $data = GetImageSize($srcFile);

 switch($data[2]) {

  case 1:

  $im=@ImageCreateFromGIF($srcFile);

  break;

  case 2:

  $im=@ImageCreateFromJPEG($srcFile);

  break;

  case 3:

  $im=@ImageCreateFromPNG($srcFile);

  break;

  }

 if(!$im) return False;

 $srcW=ImageSX($im);

 $srcH=ImageSY($im);

 $dstX=0;

 $dstY=0;

 if ($srcW*$dstH$srcH*$dstW) {

 $fdstH = round($srcH*$dstW/$srcW);

 $dstY = floor(($dstH-$fdstH)/2);

 $fdstW = $dstW;

 }

 else

 {

 $fdstW = round($srcW*$dstH/$srcH);

 $dstX = floor(($dstW-$fdstW)/2);

 $fdstH = $dstH;

 }

$ni=ImageCreateTrueColor($dstW,$dstH);

$dstX=($dstX0)?0:$dstX;

$dstY=($dstX0)?0:$dstY;

$dstX=($dstX($dstW/2))?floor($dstW/2):$dstX;

$dstY=($dstY($dstH/2))?floor($dstH/s):$dstY;

$white = ImageColorAllocate($ni,255,255,255);

$black = ImageColorAllocate($ni,0,0,0);

imagefilledrectangle($ni,0,0,$dstW,$dstH,$white);// 填充背景色

ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);

//if($markwords!=null){

// $markwords=iconv("gb2312","UTF-8",$markwords);

// //转换文字编码

// ImageTTFText($ni,20,30,450,560,$black,"simhei.ttf",$markwords); //写入文字水印,参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容-php图片缩略图函数

//}elseif($markimage!=null) {

// $wimage_data = GetImageSize($markimage);

// switch($wimage_data[2]) {

// case 1:

//  $wimage=@ImageCreateFromGIF($markimage);

//  break;

// case 2:

//  $wimage=@ImageCreateFromJPEG($markimage);

//  break;

// case 3:

//  $wimage=@ImageCreateFromPNG($markimage);

//  break;

// }

// imagecopy($ni,$wimage,500,560,0,0,88,31); //写入图片水印,水印图片大小默认为88*31

// imagedestroy($wimage);

//}

$dstFile = $srcFile.'.gif';

ImageJpeg($ni,$dstFile,$rate);

//ImageJpeg($ni,$srcFile,$rate);

imagedestroy($im);

imagedestroy($ni);

}