/usr/bin/convert $sourceFilePath -resize $size -background white -gravity center -extent $size $newFilePath
/usr/bin/convert /tmp/test.jpg -resize 500x500 -background white -gravity center -extent 500x500 /tmp/test_500x500.png
意为将test.jpg缩放(缩小或补充)为500x500px 图片居中,背景白色
这样图片出来后一定是500x500的图片,放在500x500的div里面就正好合适且居中
若不加 -extent 500x500 则图片就等比缩放,图片最后尺寸可能不会是500x500,放在500x500的div里面就会靠左或靠上
===============================
php计算等比宽高:
/**
限制图片宽和高在一个范围内
文件全路径,包括文件名,传入限制的宽 和 高 0为不限制
返回按等比计算限制之后的宽和高
*/
public static function getLimitWH($sourceWidth, $sourceHeight, $maxWidth=0, $maxHeight=0){
//$imgInfo = getimagesize($fileName);
$maxWidth = min($sourceWidth, $maxWidth);
$maxHeight = min($sourceHeight, $maxHeight);
if ($maxWidth && $maxHeight) {//宽高都限制
$tmp_width = intval($sourceWidth*$maxHeight/$sourceHeight);//先按高计算宽
if ($tmp_width > $maxWidth){//如果算出来超出了限制
$maxHeight = intval($sourceHeight*$maxWidth/$sourceWidth);//则按宽计算高
}else{
$maxWidth = $tmp_width;
}
} elseif ($maxWidth) {//只限制宽
$maxHeight = intval($sourceHeight*$maxWidth/$sourceWidth);//按宽算高
} elseif ($maxHeight) {//只限制高
$maxWidth = intval($sourceWidth*$maxHeight/$sourceHeight);//按高算宽
}
return array($maxWidth, $maxHeight);
}