gpt4 book ai didi

php - 缩放水印以适合父图像

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:42 24 4
gpt4 key购买 nike

我的照片尺寸各不相同,它们要么是横向的,要么是纵向的,要么是正方形的,我需要为每张照片制作一个最适合的水印 - 所以我只需要调整水印的宽度(没有 Imagick),因为它是长方形,所以高度无关紧要。

我找到了 PHP 函数 imagecopyresized,但老实说,即使查看了 PHP 文档,我也无法确定我的情况需要哪些参数!我也不确定在使用 imagecopyresized 后,我的函数的其余部分是否会在获取水印宽度和高度的地方工作。

谁能帮我越过终点线。这就是我得到的结果,它所需要的只是将正确的参数添加到 imagecopyresized 部分:

<?php

header('content-type: image/jpeg');

$image = imagecreatefromjpeg('https://.....jpg');
$imageSize = getimagesize('https://.....jpg');

$newWatermarkWidth = $imageSize[0]-50; // width of image minus 50px
$watermark = imagecreatefrompng('watermark.png');

// resize watermark to newWatermarkWidth here with imagecopyresize
$watermark = imagecopyresized(?,?,?,?);

$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

$dest_x = ($imageSize[0]/2) - ($watermark_width/2) ;
$dest_y = ($imageSize[1]/2) - ($watermark_height/2);

imagecopy($image, $watermark, round($dest_x,0), round($dest_y,0), 0, 0, $watermark_width, $watermark_height);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);

?>

这就是我的结局并且完美地工作

调整水印宽度以适应整个父图像的脚本,居中且成比例。

<?php
header('content-type: image/jpeg');

$image = imagecreatefromjpeg('http://mydomain.com/myPhoto.jpg');
$imageSize = getimagesize('http://mydomain.com/myPhoto.jpg');

$watermark = imagecreatefrompng('http://mydomain.com/myWatermark.png');

$watermark_o_width = imagesx($watermark);
$watermark_o_height = imagesy($watermark);

$newWatermarkWidth = $imageSize[0]-20;
$newWatermarkHeight = $watermark_o_height * $newWatermarkWidth / $watermark_o_width;

imagecopyresized($image, $watermark, $imageSize[0]/2 - $newWatermarkWidth/2, $imageSize[1]/2 - $newWatermarkHeight/2, 0, 0, $newWatermarkWidth, $newWatermarkHeight, imagesx($watermark), imagesy($watermark));

imagejpeg($image);

imagedestroy($image);
imagedestroy($watermark);

最佳答案

这会调整水印的大小并直接复制到图像。

您不再需要现有的 imagecopy 行。

$success = imagecopyresized($image,                 // Destination image
$watermark, // Source image
$imageSize[0]/2 - $newWatermarkWidth/2, // Destination X
$imageSize[1]/2 - imagesy($watermark)/2, // Destination Y
0, // Source X
0, // Source Y
$newWatermarkWidth, // Destination W
imagesy($watermark), // Destination H
imagesx($watermark), // Source W
imagesy($watermark)); // Source H

关于php - 缩放水印以适合父图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693644/

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