gpt4 book ai didi

php - 使用 PHP Imagick 将 Logo 应用到 T 恤

转载 作者:行者123 更新时间:2023-12-03 23:12:39 26 4
gpt4 key购买 nike

我是 imagemagic 的新手,又名 imagick on php,我正在尝试关注 this thread使用 PHP 代码。我曾尝试将此 Logo 应用到 T 恤上,但无法通过跟踪威胁来实现,因为我无法在 php 中找到大多数方法,例如使用置换贴图开始。我试过的是以下代码:

$image = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/images/VYLZsoD.jpg');    
$logo = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/images/logo.png');
$logo->resizeImage(200, 200, imagick::FILTER_LANCZOS, 1, TRUE);
header("Content-Type: image/jpg");

$image->compositeimage($logo, Imagick::COMPOSITE_DEFAULT, 400, 260);
$image->flattenImages();

echo $image;

我想使用线程中显示的步骤来创建面具等,以便使用 php 代码(而不是通过命令)将 Logo 应用到 T 恤上。我什至使用“COMPOSITE_OVERLAY”使 Logo 看起来像它的一部分 T 恤但由于透明度, Logo 的原始颜色似乎减少了,check here for my final tshirt.

  1. 请告诉我如何在 php 中使用 imagick 存档更好的结果(不减少 Logo 的颜色)
  2. 我可以在 T 恤上标记一个区域,这样当我四处拖动 Logo 时,它就不会显示在 T 恤边框之外吗?

Source tshirt Source logo

最佳答案

您发布的输出图像看起来不像我在运行您的代码时看到的输出图像。显然稍微调整了位置,我看到的输出图像并没有减少颜色。

enter image description here

如果您没有看到相同的东西,则可能是您的 ImageMagick 版本存在错误。您可以尝试使用复合方法 COMPOSITE_ATOP,它应该通过不同的混合方法产生相同的结果。

关于你的第二个问题,如何将 Logo 覆盖限制在 T 恤的边缘,你可以通过从 T 恤创建一个蒙版,使用 COMPOSITE_SRCIN 将 Logo 绘制到该蒙版上,然后将其结果绘制到T 恤:

    $tshirt = new \Imagick(realpath("../images/tshirt/tshirt.jpg"));
$logo = new \Imagick(realpath("../images/tshirt/Logo.png"));
$logo->resizeImage(100, 100, \Imagick::FILTER_LANCZOS, 1, TRUE);

$tshirt->setImageFormat('png');

$max = $image->getQuantumRange();
$max = $max["quantumRangeLong"];

//Create a mask by cloning the shirt,
$mask = clone $tshirt;
//Negating the image,
$mask->negateimage(true);
//Make it transparent everywhere that it is now white.
$mask->transparentPaintImage(
'black',
0,
0.1 * $max,
false
);

//Paint the logo onto the mask, SRCIN just uses the logo's color
$mask->compositeimage($logo, \Imagick::COMPOSITE_SRCIN, 210, 75);
//Paint the result of the logo + mask onto the tshirt.
$tshirt->compositeimage($mask, \Imagick::COMPOSITE_DEFAULT, 0, 0);
//Merge the image with a non-deprecated function.
$tshirt->mergeimagelayers(\Imagick::LAYERMETHOD_COALESCE);

header("Content-Type: image/png");
echo $tshirt->getImageBlob();
}

产生类似的东西:

enter image description here

这是否是个好主意是另一回事。

关于php - 使用 PHP Imagick 将 Logo 应用到 T 恤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com