我正在将徽标上传到我的系统,它们需要在60x60像素的框中修复。我有所有代码可以按比例调整大小,这不是问题。
我的454x292px图片变为60x38。问题是,我需要图片为60x60,这意味着我想在顶部和底部分别填充白色(我可以用颜色填充矩形)。
理论是我创建一个60x60的白色矩形,然后复制图像并将其调整为60x38,然后将其放入我的白色矩形中,从顶部开始11像素(这加起来我需要的总填充为22像素)。
我会发布我的代码,但是相当长,尽管我可以要求。
有人知道如何执行此操作,还是可以将我指向执行此操作的代码/教程?
最佳答案
使用GD:
$newWidth = 60;
$newHeight = 60;
$img = getimagesize($filename);
$width = $img[0];
$height = $img[1];
$old = imagecreatefromjpeg($filename); // change according to your source type
$new = imagecreatetruecolor($newWidth, $newHeight)
$white = imagecolorallocate($new, 255, 255, 255);
imagefill($new, 0, 0, $white);
if (($width / $height) >= ($newWidth / $newHeight)) {
// by width
$nw = $newWidth;
$nh = $height * ($newWidth / $width);
$nx = 0;
$ny = round(fabs($newHeight - $nh) / 2);
} else {
// by height
$nw = $width * ($newHeight / $height);
$nh = $newHeight;
$nx = round(fabs($newWidth - $nw) / 2);
$ny = 0;
}
imagecopyresized($new, $old, $nx, $ny, 0, 0, $nw, $nh, $width, $height);
// do something with new: like imagepng($new, ...);
imagedestroy($new);
imagedestroy($old);