我正在将徽标上传到我的系统,它们需要在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);

09-25 21:00