仅显示图像的某些部分并使用 GD 调整其大小

Posted

技术标签:

【中文标题】仅显示图像的某些部分并使用 GD 调整其大小【英文标题】:Display only certain part of an image and resize it with GD 【发布时间】:2011-03-23 12:05:05 【问题描述】:

我目前准备好了一个脚本,可以使用 GD 调整整个图像的大小,但我需要获取图像的特定部分以仅显示该特定部分并调整其大小。

这是图片:

http://craffy.gdscei.com/enjikaka.png

这是需要显示的,剩下的用Photoshop去掉:

http://craffy.gdscei.com/enjikakap.png

最终图像需要为 150x150。

这是我尝试过的脚本:

<?php

    $srcp = imagecreatefrompng("enjikaka.png");
    $destp = imagecreate(150, 150);
    imagecopyresampled($destp, $srcp, 0, 0, -8, -8, 150, 150, 64, 32);
    header('Content-type: image/png');
    imagepng($destp);

?>

但是这个没有选择图像的正确部分。有人可以帮我吗?

【问题讨论】:

【参考方案1】:

为什么是 (-8, -8)?这些应该是您要复制的区域的左上角。它应该是 8, 8。最后两个参数: (64, 32) 是源区域的宽度和高度。应该是8,8也是。

imagecopyresampled ($destp, $srcp, 0, 0, 8, 8, 150, 150, 8, 8);

我在这里假设您的源图像由 8x8 单位构成。您应该检查照片中的坐标。

我建议你阅读documentation of the function。当事情没有按您的预期进行时,您应该首先做的事情。

【讨论】:

【参考方案2】:
$srcp = imagecreatefrompng("enjikaka.png");
$destp = imagecreate(150, 150);
imagecopy($despt, $srcp, $dst_x , $dst_y , $src_x , $src_y , $src_w , $src_h);

我认为您应该在脚本中包含对 imagecopy 的调用,它应该处理图像的裁剪。

【讨论】:

不起作用,显示空白页:craffy.gdscei.com/ppic.php,我使用的代码:$srcp = imagecreatefrompng("enjikaka.png");$destp = imagecreate(150, 150);imagecopy($destp, $srcp, 0, 0, -8 -8, 64, 32);header('Content-type: image/png');imagepng($destp); 那些 -8 坐标看起来很可疑,但不确定是否是导致问题的原因

以上是关于仅显示图像的某些部分并使用 GD 调整其大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 GD 调整图像大小

使用 GD 调整图像大小问题

PHP GD - 调整图像框架/画布的大小,但不是实际图像

如何使用 GD 调整上传图像的大小并将其转换为 PNG?

在这种情况下GD有啥理由压缩我调整大小的图像

调整图像大小仅用于显示