PHP GD - 调整图像框架/画布大小而不改变实际图像

7

我有一张尺寸为88x31的图片,想将它变成100x100,但只改变其画布/框架大小而不改变实际图像大小,也许可以通过将其复制到新的白色100x100大小的空白图像中心来实现。有什么好的方法吗?


不要重复造轮子,使用现有的代码:https://github.com/avalanche123/Imagine,但如果你坚持要自己写,Stack Overflow上有大量类似的问题已经得到解答。 - nikc.org
1
可能是使用GD创建包含其他图像的图片的重复问题。 - nikc.org
Imagine的问题在于命名空间支持,而我的PHP目前还没有这个功能,我暂时不想升级,但还是谢谢。 - Marcin
不要抗拒未来!升级吧!;-) 但说真的,这个问题已经被解决了很多次,就像 Justin Bieber 有很多粉丝一样。如果 SO 对你不够用,可以在 Google 上查看 http://www.google.fi/search?q=gd+wrapper+php 或者 PHP 手册页面上的 imagecopy http://fi.php.net/manual/en/function.imagecopy.php - nikc.org
1
好的,我现在明白了,谢谢nikc.org。 - Marcin
2个回答

10

正确的方法是创建一个新图像,然后将旧图像复制到其中间(假设起始图像为JPEG格式且小于100x100):

$oldimage = imagecreatefromjpeg($filename);
$oldw = imagesx($oldimage);
$oldh = imagesy($oldimage);

$newimage = imagecreatetruecolor(100, 100); // Creates a black image

// Fill it with white (optional)
$white = imagecolorallocate($newimage, 255, 255, 255);
imagefill($newimage, 0, 0, $white);

imagecopy($newimage, $oldimage, (100-$oldw)/2, (100-$oldh)/2, 0, 0, $oldw, $oldh);

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接