Я загружаю логотипы в свою систему, и их нужно исправить в поле размером 60×60 пикселей. У меня есть весь код для его пропорционального изменения, и это не проблема.
Мое изображение 454x292px становится 60×38. Дело в том, что мне нужно, чтобы изображение было 60х60, а это означает, что я хочу накладывать верхнюю и нижнюю белые на каждый (я могу заполнить прямоугольник цветом).
Теория заключается в том, что я создаю белый прямоугольник, 60×60, затем копирую изображение и изменяю его размер до 60×38 и помещаю его в свой белый прямоугольник, начиная с вершины 11px (что добавляет до 22px общей прокладки, которая мне нужна.
Я бы опубликовал свой код, но он прилично длинный, хотя я могу, если потребуется.
Кто-нибудь знает, как это сделать, или вы можете указать мне на код / учебник, который делает это?
С 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);
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
В этой части объясняется, как заполнить его белым.
Остальное следует.