【问题标题】:Resize image before using in imagecopymerge在 imagecopymerge 中使用之前调整图像大小
【发布时间】:2013-11-07 01:13:54
【问题描述】:

我有一个使用 imagecopymerge 的程序。在这里,我使用了两张图片。背景的第一张图片和要放置在其中的第二张图片。我可以这样做,但现在我希望第二张图像具有一定的尺寸。此图像由用户上传并保存在我的服务器上,因此我无法控制它的大小。如何在我的 imagecopymerge 中使用第二张图像之前调整它的大小?非常感谢您的回答。还请考虑在上传过程中调整大小是我最少的选择。我希望大小为 255x175。

这就是我所拥有的:

$uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])

$upload = $uploadFilename;
$im = imagecreatefromjpeg("bg.jpg");
$img2 = imagecreatefromjpeg($upload);
$black = imagecolorallocate($im, 0, 0, 0);
$font = 'arialbi.ttf';
$font2 = 'ariali.ttf';

$newtitle = wordwrap($title, 28, "\n", true);
$newertitle = explode("\n", $newtitle);

imagettftext($im, 28, 0, 7, 270, $black, $font, $newertitle[0]);
imagettftext($im, 28, 0, 7, 320, $black, $font, $newertitle[1]);
imagettftext($im, 10, 0, 320, 362, $black, $font, $namehere);

imagecopymerge($im, $img2, 10, 350, 0, 0, imagesx($img2), imagesy($img2), 100);
imagedestroy($im);

【问题讨论】:

  • 在您希望调整大小的图像上使用imagecopyresampled(),实际上您可以使用它来执行“合并”操作,因为它具有源/目标宽度和高度
  • @Scuzzythans 回答。你能给我一些代码吗?所以我会知道如何。感谢您进一步帮助我
  • imagecopyresampled()imagecopymerge() 非常相似,您自己实现它应该没有问题,只需密切注意参数顺序,因为第 7 个参数以后是不同的。
  • 你能给我一个示例代码吗?我已经阅读了 php.netmanual 并且我有点困惑。谢谢
  • 它也使用百分比。我想提出 255x175px 的大小,如果它使用百分比,你怎么能提出这个?非常感谢

标签: php file-upload resize


【解决方案1】:

http://php.net/manual/en/function.imagecopyresampled.php

获取您的代码...

imagecopymerge($im, $img2, 10, 350, 0, 0, imagesx($img2), imagesy($img2), 100);

然后改成...

imagecopyresampled($im, $img2, 10, 350, 0, 0, 255, 175, imagesx($img2), imagesy($img2));

【讨论】:

  • 我已经尝试过了,但我只想调整 $img2 的大小。不是整个图像。
  • 请帮助我,在我发布这个问题之前,我也遇到了这个代码和情况。我真的失去了希望。
  • 或者,如果我对 $img2 进行图像复制重新采样,然后在调整其大小时我可以在我的 imgcopymerge 中使用它,是否有可能?请参考我的问题中的代码。 $img2 是上传的文件。我在那儿提到过。谢谢
  • 这里是来自 PHP 网站的 imagecopyresampled 页面的描述... imagecopyresampled() 将一个图像的矩形部分复制到另一个图像,平滑地插入像素值,特别是,减小图像的大小仍然可以保持很大的清晰度。 这正是您想要做的,对吗?请在某处上传示例图形供我测试。
  • 是的,它现在可以工作了!像魅力一样工作!非常感谢!
【解决方案2】:

只需使用php function 给出为:

$img = imagecreatefromjpeg("source_of_img.jpg");
$imgresize = imagescale($dp,200,200);

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2012-12-14
    • 2011-09-01
    • 2013-07-26
    • 2015-12-05
    相关资源
    最近更新 更多