php不变形缩放图片-PHP问题

资源魔 37 0

php没有变形缩放图片:

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
    $pic_width = imagesx($im);
    $pic_height = imagesy($im);
 
    if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
    {
        if($maxwidth && $pic_width>$maxwidth)
        {
            $widthratio = $maxwidth/$pic_width;
            $resizewidth_tag = true;
        }
 
        if($maxheight && $pic_height>$maxheight)
        {
            $heightratio = $maxheight/$pic_height;
            $resizeheight_tag = true;
        }
 
        if($resizewidth_tag && $resizeheight_tag)
        {
            if($widthratio<$heightratio)
                $ratio = $widthratio;
            else
                $ratio = $heightratio;
        }
 
        if($resizewidth_tag && !$resizeheight_tag)
            $ratio = $widthratio;
        if($resizeheight_tag && !$resizewidth_tag)
            $ratio = $heightratio;
 
        $newwidth = $pic_width * $ratio;
        $newheight = $pic_height * $ratio;
 
        if(function_exists("imagecopyresampled"))
        {
            $newim = imagecreatetruecolor($newwidth,$newheight);
           imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }
        else
        {
            $newim = imagecreate($newwidth,$newheight);
           imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }
 
        $name = $name.$filetype;
        imagejpeg($newim,$name);
        imagedestroy($newim);
    }
    else
    {
        $name = $name.$filetype;
        imagejpeg($im,$name);
    }           
}

参数阐明:

$im 图片工具,使用函数以前,你需求用imagecreatefromjpeg()读取图片工具,假如PHP环境支持PNG,GIF,也可以使用imagecreatefromgif(),imagecreatefrompng();

$maxwidth 界说天生图片的最年夜宽度(单元:像素)

$maxheight 天生图片的最年夜高度(单元:像素)

$name 天生的图片名

$filetype 终极天生的图片类型(.jpg/.png/.gif)

代码正文:

第3~4行:读取需求缩放的图片实际宽高

第8~26行:经过较量争论实际图片宽高与需求天生图片的宽高的紧缩比例终极患上出进行图片缩放是依据宽度仍是高度进行缩放,以后顺序是依据宽度进行图片缩放。假如你想依据高度进行图片缩放,你能够将第22行的语句改为$widthratio>$heightratio

第28~31行:假如实际图片的长度或许宽度小于规则天生图片的长度或许宽度,则要末依据长度进行图片缩放,要末依据宽度进行图片缩放。

第33~34行:较量争论终极缩放天生的图片长宽。

第36~45行:依据较量争论出的终极天生图片的长宽扭转图片巨细,有两种扭转图片巨细的办法:ImageCopyResized()函数正在一切GD版本中无效,但其缩放图象的算法比拟毛糙。ImageCopyResamples(),其像素插值算法失去的图象边缘比拟滑润圆滑,但该函数的速率比ImageCopyResized()慢。

第47~49行:终极天生通过解决后的图片,假如你需求天生GIF或PNG,你需求将imagejpeg()函数改为imagegif()或imagepng()

第51~56行:假如实际图片的长宽小于规则天生的图片长宽,则放弃图片原样,同理,假如你需求天生GIF或PNG,你需求将imagejpeg()函数改为imagegif()或imagepng()。

特地阐明:

GD库1.6.2版之前支持GIF格局,但因GIF格局应用LZW演算法关涉专利权,因而正在GD1.6.2版之后没有支持GIF的格局。假如你是WINDOWS的环境,你只需进入PHP.INI文件找到extension=php_gd2.dll,将#去除了,重启APACHE便可,假如你是Linux环境,又想支持GIF,PNG,JPEG,你需求去下载libpng,zlib,和freetype字体并装置。

保举:php效劳器

以上就是php没有变形缩放图片的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题 缩放图片

抱歉,评论功能暂时关闭!