PHP GD библиотека, помещающая белую область вокруг изображения - PullRequest
1 голос
/ 23 декабря 2010

Я экспортирую некоторые изображения из flash и затем изменяю их размер в php. Я использую библиотеку GD, чтобы сделать это. Тем не менее, у меня возникают трудности с правильными размерами ... некоторые - альбомные, некоторые - портретные, и у меня есть даже размерные делители, в которые их нужно поместить.

Итак, когда я изменяю их размеры до определенной высоты, есть такие, которые (например) 150px x 30px, а некоторые - 30px x 150px. Проблема с вертикальным выравниванием в CSS.

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

Каков наилучший способ сделать это с библиотекой GD?

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

В этом случае просто создайте изображение 150x150, залейте его белым цветом, а затем вставьте ваше изображение в соответствующее место на этом новом изображении.

$src = imagecreatefromjpeg(...); // your flash exported image
$dst = imagecreatetruecolor(150,150); // new blank 150x150 image
imagefill($dst, 0, 0, 0xFFFFFF); // flood fill with white

$new_x = ...
$new_y = ... // figure out resizing parameters for the $src image

imagecopyresampled($dst, $src, ...);

imagejpeg($dst, 'resized.jpg');

Точные сведения о параметрах копии с выборкой здесь .

0 голосов
/ 29 декабря 2010

Вот ссылка на функцию, которую я написал, которая поможет вам изменить размер изображения любого размера до любого произвольного размера.Эта функция также позволяет вам обрезать изображение по размеру или поместить в почтовый ящик ваше изображение, чтобы оно соответствовало желаемому соотношению сторон.

https://www.spotlesswebdesign.com/blog.php?id=1

Если это помогает, выберитеПоставьте галочку рядом с этим ответом.Спасибо!

0 голосов
/ 23 декабря 2010

внимательно посмотрите на этот вопрос переполнения стека вам нужны размеры вашего нового изображения, ваши размеры исходного изображения и формула в основном:

$startx=($newx_size/2)-($oldx_size/2),     
$starty=($newy_size/2)-($oldy_size/2)

ваш старт xи y - средние точки вашего нового изображения (newX и newY, разделенные на 2) минус высота / ширина изображения с измененным размером ($ oldx и oldy, каждое разделенное на два). Сначала измените их размер, получите их новые размеры и разместите их соответственно.

...