PHP GD库,在图像周围放置白色区域

时间:2010-12-23 01:22:00

标签: php gd

我从flash导出一些图像,然后在php中调整它们的大小。我正在使用GD库来执行此操作。然而,我在缩小尺寸方面遇到了一些困难...有些是风景,有些是肖像,我甚至还有需要放入的大小的div。

因此,当我将它们调整到某个高度时,有一些(例如)150px x 30px,有些则是30px x 150px。问题在于css中的垂直对齐。

我认为解决方案是在图像周围放置空白,以便它们都测量相同的宽度和高度,但图像在中间垂直和水平居中。

使用GD库执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

在这种情况下,只需创建一个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');

copyresampled参数here的确切详情。

答案 1 :(得分:0)

仔细看看这个stackoverflow question你需要新图像的尺寸,原始图像的尺寸和公式基本上,

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

您的开始x和y是新图像的中间点(newX和newY除以2)减去调整大小后的图像的高度/宽度($ oldx和oldy除以2)。首先调整它们的大小,得到它们的新的尺寸并相应地放置它们。

答案 2 :(得分:0)

这是我编写的函数的链接,它可以帮助您将任何大小的图像调整为任意大小。该功能还允许您裁剪图像或信箱,以使其符合所需的宽高比。

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

如果这有帮助,请选择此答案旁边的复选标记。谢谢!