按比例生成缩略图

本文介绍了一种使用PHP按原始图片的比例生成缩略图的方法。通过自定义函数CreateThumbnail,可以根据指定宽度或高度创建等比缩放的图片副本,并支持JPEG、GIF和PNG格式。适用于网站图片优化及快速预览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CreateThumbnail( "aa.jpg" , "aa.gif" , 0 , 200  ); 

按比例生成缩略图

CreateThumbnail(源文件,目标文件,宽,高)

当宽/高 , 其中一个值为零时,就按比例输出..


function CreateThumbnail( $path , $newFileName ,  $width = 100 , $height = 100 )
{
//type: jpg,gif,png
// 当width = 0 或 height = 0 时,按宽或高比例缩小
@$s_img = getimagesize($path);
@$type = $s_img[ 2 ];

 

switch( $type )
{
case 1 : @$im = imagecreatefromgif( $path );break;
case 2 : @$im = imagecreatefromjpeg( $path ); break;
case 3 : @$im = imagecreatefrompng( $path );break;
default: $im = false;break;
}
@$s_width = imagesx( $im );
@$s_height = imagesy( $im );

$sizexy = getScaleImage( $path , $width , $height );
$width = $sizexy[ 0 ];
$height = $sizexy[ 1 ];


if( $im )
{
$im2 = imagecreatetruecolor( $width , $height );
imagecopyresized ( $im2 ,$im , 0 ,0 ,0 , 0 , $width , $height , $s_width , $s_height );
imagejpeg( $im2 , $newFileName );
}
return false;
}

function getScaleImage( $image , $perfectWidth , $perfectHeight )

 {

   //当$perfectWidth $perfectHeight 其中一个为零时,就按比例输出

  //当$perfectWidth $perfectHeight 都不为零时,就按值输出

  if ( realpath( $image ) != false  )

  {

   $sizeArray = getimagesize( $image );

   $sizeX = $sizeArray[ 0 ] ;

   $sizeY = $sizeArray[ 1 ] ;

   if ( $perfectWidth != 0 && $perfectHeight == 0 )

   {

    if ( $sizeX > $perfectWidth )

    {

     $scale = $sizeX / $sizeY ;

     $sizeX = $perfectWidth;

     $sizeY = floor( $sizeX/$scale );

    } 

   }

   

   if ( $perfectHeight != 0 && $perfectWidth == 0 )

   {

    if ( $sizeY > $perfectHeight )

    {

     $scale = $sizeY / $sizeX ;

     $sizeY = $perfectHeight;

     $sizeX = floor( $sizeY/$scale );

    } 

   }

   

   if ( $perfectHeight != 0 && $perfectWidth != 0 )

   {

    $sizeX = $perfectWidth;

    $sizeY = $perfectHeight;

   }

   $tmp[] = $sizeX;

   $tmp[] = $sizeY;
   
   
   }
   else
   {

    $tmp[] = 0;
 
    $tmp[] = 0;
   
   }
  return $tmp;

 }
 
//$tm = getScaleImage( "aa.jpg" , 100 , 100 );
//echo "<img src=/"aa.jpg/" width='".$tm[0]."' height='".$tm[1]."' />";
//foreach ( $tm as $v )
//{
// echo $v."<br>";
//}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值