<?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);
$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_w=$data[0];
$src_h=$data[1];
//求出原图和目的图片的宽度的比例
$bili_w = $src_w/$dst_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);
?>
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);
?>