Изменить размер изображения и заполнить пробелы пропорций цветом - PullRequest
2 голосов
/ 16 июня 2010

Я загружаю логотипы в свою систему, и их нужно исправить в окне размером 60x60 пикселей.У меня есть весь код, чтобы пропорционально изменить его размер, и это не проблема.

Мое изображение размером 454x292px становится 60x38.Дело в том, что мне нужно, чтобы картинка была размером 60x60, то есть я хочу добавить верх и низ белым цветом (я могу заполнить прямоугольник цветом).

Теория заключается в том, что я создаю белый прямоугольник,60x60, затем я копирую изображение и изменяю его размер до 60x38 и помещаю его в свой белый прямоугольник, начиная с 11px сверху (что составляет 22px общего заполнения, которое мне нужно.

Я бы опубликовал свой кодно это довольно долго, хотя я могу, если потребуется.

Кто-нибудь знает, как это сделать, или вы можете указать мне код / ​​учебник, который это делает?

Ответы [ 2 ]

7 голосов
/ 16 июня 2010

С 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);
0 голосов
/ 16 июня 2010

http://php.net/manual/en/function.imagecopyresampled.php

Это, в основном, функция, которую вы хотите скопировать и плавно изменить ее размер.

http://www.php.net/manual/en/function.imagecreatetruecolor.php

С помощью нее вы создаете новое черное изображение.

http://www.php.net/manual/en/function.imagefill.php

Эта часть объясняет, как ее залить белым.

Остальное следует.

...