按比例生成缩略图文件及显示缩略图

本文介绍了一种使用PHP实现的图片缩放与裁剪方法,能够根据不同需求调整图片尺寸,保持原始图片的比例,同时支持多种图片格式。通过自定义函数CreateThumbnail,可以为不同应用场景生成合适的缩略图。

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

<?php
    
    
function CreateThumbnail($path,$newFileName,$width=100,$height=100)
    {
        @
$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)
    {
        
if (realpath($image!= false)
        {
            
$sizeArray = getimagesize($image);
            
$sizeX     = $sizeArray0 ] ;
            
$sizeY     = $sizeArray1 ] ;
                
            
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;
        }
        
return $tmp;
    }
    
    
$tm = getScaleImage("100_3353.jpg",0,0);
    
echo "<img src="100_3353.jpg" width='".$tm[0]."' height='".$tm[1]."' />";
    
foreach ($tm as $v)
    {
        
echo $v."<br>";
    }

    
//CreateThumbnail("100_3353.jpg","aa.gif",100,0);

?>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值