php中将一张图片缩略成200×200的新图片

<?php
header("content-type:text/html;charset=utf-8");
header("content-type:image/png");
//定义目标图片的宽高
$dst_w = 200;
$dst_h = 200;
$image="img/100-100.png";
//获取这张图片的基本信息(宽、高、类型),获取到的信息存放在$data里,$data[0]:宽,$data[1]:高,$data["mime"]:图片的类型
$data = getimagesize($image);
//var_dump($data);

//判断传进的图片是什么类型的

switch ($data['mime']){

    case "image/png":

        $srcType = 'imagecreatefrompng';//将imagecreatefrompng作为变量赋值给$srcType,后面通过$srcType()来调用,就相当于使用函数imagecreatefrompng(),这是变量函数的一种应用。
        $outType = 'imagepng';//原理同上
        break;
    case "image/jpg":
    case "image/jpeg"://当图图片的类型为jpg或者jpeg的时候,都是使用imagecreatefromjpeg()来创建的
        $srcType = 'imagecreatefromjpeg';
        $outType = 'imagejpeg';
        break;
    case "image/gif":
        $srcType = 'imagecreatefromgif';
        $outType = 'imagegif';
        break;
}

//从传进来的图片创建一张图片

$src_image=$srcType($image);

//获取原图片的宽高
$src_w=$data[0];
$src_h=$data[1];
//求出原图和目的图片的宽度的比例
$bili_w = $src_w/$dst_w;

//求出求出原图和目的图片的高度的比例

$bili_h = $src_h/$dst_h;

//如果原图的宽度和高度小于等于目标图片的时候,那么无需进行缩放(避免小图片的拉伸),直接将创建的新的图片的宽高设置成原图的宽高

if($src_w <= $dst_w && $src_h <= $dst_h){

    $true_w = $src_w;
    $true_h = $src_h;
    $dst_im = imagecreatetruecolor($true_w, $true_h);
}elseif($bili_w >= $bili_h){//如果宽度的比例大于等于高度的比例,那么就按照宽度的比例来进行缩放,比如我传进的图片是一张800×600的,我要缩放成200×200的,那么就需要将800×600的图缩放成200×150的,即是创建的目的图片的宽高为200×150.
    $true_w = $src_w/$bili_w;
    $true_h = $src_h/$bili_w;
    $dst_im = imagecreatetruecolor($true_w, $true_h);
}else{//如果高度的比例大于宽度的比例,那么就按照高度的比例来进行缩放,比如我传进的图片是一张600×800的,我要缩放成200×200的,那么就需要将600×800的图缩放成150×200的,即是创建的目的图片的宽高为150×200.
    $true_w = $src_w/$bili_h;
    $true_h = $src_h/$bili_h;
    $dst_im = imagecreatetruecolor($true_w, $true_h);
}
imagecopyresized($dst_im, $src_image, 0, 0, 0, 0, $true_w, $true_h, $src_w, $src_h);
$outType($dst_im);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值