图像调整大小和裁剪
Posted
技术标签:
【中文标题】图像调整大小和裁剪【英文标题】:Image Resize & Crop 【发布时间】:2012-01-25 14:00:57 【问题描述】:我想调整图像大小,使调整后的大小始终填满所需区域。我希望脚本拍摄任何尺寸的图像,将最短边的大小调整为 90px,然后裁剪顶部和底部(如果是横向,则裁剪左右边)以获得 90px x 90px 的正方形
【问题讨论】:
你能展示一下你尝试过的东西吗? 我使用 Codeigniter Image_lib 调整大小 【参考方案1】:此代码使用 GD 函数完成此操作。
源图像可以是 JPEG、PNG、GIF 或 BMP 格式。如果您事先知道格式,则可以摆脱 switch 语句。结果保存为 JPEG。
$srcPath = "your source image path goes here";
$dstPath = "your destination image path goes here";
$size = "90x90";
list($w, $h, $type) = getimagesize($srcPath);
switch ($type)
case IMAGETYPE_JPEG:
$src = imagecreatefromjpeg($srcPath);
break;
case IMAGETYPE_PNG:
$src = imagecreatefrompng($srcPath);
break;
case IMAGETYPE_GIF:
$src = imagecreatefromgif($srcPath);
break;
case IMAGETYPE_BMP:
$src = imagecreatefrombmp($srcPath);
break;
list($dst_w, $dst_h) = explode('x', $size);
$dst = imagecreatetruecolor($dst_w, $dst_h);
$dst_x = $dst_y = 0;
$src_x = $src_y = 0;
if ($dst_w/$dst_h < $w/$h)
$src_w = $h*($dst_w/$dst_h);
$src_h = $h;
$src_x = ($w-$src_w)/2;
$src_y = 0;
else
$src_w = $w;
$src_h = $w*($dst_h/$dst_w);
$src_x = 0;
$src_y = ($h-$src_h)/2;
imagecopyresampled($dst, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
imagejpeg($dst, $dstPath);
imagedestroy($src);
imagedestroy($dst);
【讨论】:
它正在创建一个黑色图像 90*90 虽然这是完全有效的,但使用 CodeIgniter 执行此操作是一种非常低效的方法,它有自己的库来完成此任务。以上是关于图像调整大小和裁剪的主要内容,如果未能解决你的问题,请参考以下文章