【问题标题】:PHP GD library, putting white area around an imagePHP GD库,在图像周围放置白色区域
【发布时间】:2011-01-01 05:22:51
【问题描述】:

我正在从 Flash 中导出一些图像,然后在 php 中调整它们的大小。我正在使用 GD 库来执行此操作。但是,我在调整尺寸时遇到了一些困难……有些是横向的,有些是纵向的,我什至还有需要放入的 div 大小。

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

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

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

【问题讨论】:

  • 到目前为止你做了什么? :)
  • 我实际上最终使用了 imageMagick。它有一个 createThumbnail 函数,让这一切变得更容易。

标签: php gd


【解决方案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');

关于复制重采样参数here的确切细节。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】: