我正在编写一个上传脚本,我目前正在使用gd调整图像大小的方法,一般来说效果很好。唯一的问题是,当用户上传肖像图像时,它们会对齐到中心,并且画布外部的部分会被切断。我添加了一个检查来识别图像是否是肖像,但现在我需要调整一些代码来操作我想要的图像。
例如,如果我上传分辨率为2000x3000像素的图像,我需要完成以下操作:
我设法缩放它,但它只保留原始分辨率,这不是想要的效果。也许这里有人可以帮助我?
提前致谢// 乔纳森
编辑:我设法通过使用我的旧技术解决它,只是在上传的图像方向是portait时更改尺寸。谢谢你的回答!
答案 0 :(得分:0)
简单缩放功能
function img_scale($source,$width,$height,$extra='border=0')
{
$w=$width;
$h=$height;
$size = @getimagesize($abu_source);
if($w > $size[0] && $h > $size[1] )
{
$neww = $size[0];//$w;
$newh = $size[1];//$h;
}
else if( $w < $size[0] && $h > $size[1] )
{
$diff=$size[0]-$w;
$dec_per=(100*$diff)/$size[0];
$neww=$size[0]-(($size[0]*$dec_per)/100);
$newh=$size[1]-(($size[1]*$dec_per)/100);
}
else if( $w > $size[0] && $h < $size[1] )
{
$diff=$size[1]-$h;
$dec_per=(100*$diff)/$size[1];
$newh=$size[1]-(($size[1]*$dec_per)/100);
$neww=$size[0]-(($size[0]*$dec_per)/100);
}
else//( $w < $size[0] && $h < $size[0] )
{
if( ($size[0]-$w) >= ($size[1]-$h))
{
$diff=$size[0]-$w;
$dec_per=(100*$diff)/$size[0];
$neww=$size[0]-(($size[0]*$dec_per)/100);
$newh=$size[1]-(($size[1]*$dec_per)/100);
$cc='w';
}
else
{
$diff=$size[1]-$h;
$dec_per=(100*$diff)/$size[1];
$newh=$size[1]-(($size[1]*$dec_per)/100);
$neww=$size[0]-(($size[0]*$dec_per)/100);
$cc='h';
}
}
return "<img src='".$source."' width='".$neww."' height='".$newh."' ".$extra." >";
}