Escalar una marca de agua para que se ajuste a la imagen principal

Los tamaños de mis fotos varían, son de paisaje, retrato o cuadrado, y necesito hacer una marca de agua que se adapte mejor a cada foto, así que necesito cambiar el tamaño del ancho de la marca de agua (sin Imagick), ya que es una forma larga de rectángulo , entonces la altura no importa.

Encontré la función PHP, imagecopyresized , pero voy a ser honesto, no puedo descifrar qué parámetros son necesarios para mi situación, incluso después de consultar la documentación de PHP. Tampoco estoy seguro si después de usar imagecopyresized, el rest de mi función funcionará donde obtenga el ancho y la altura de la marca de agua.

¿Alguien puede ayudarme a superar la línea de meta? Esto es lo lejos que llegué, todo lo que necesito son los parámetros correctos agregados a la parte de la imagecopyresized a imagecopyresized :

  

ESTO ES LO QUE HE TERMINADO Y TRABAJA PERFECTAMENTE

Una secuencia de comandos que ajusta el ancho de una marca de agua para que se ajuste a toda la imagen principal, centrada y proporcional.

 <?php header('content-type: image/jpeg'); $image = imagecreatefromjpeg('http://img.rephp.com/php/myPhoto.jpg'); $imageSize = getimagesize('http://img.rephp.com/php/myPhoto.jpg'); $watermark = imagecreatefrompng('http://img.rephp.com/php/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); 

Esto cambia el tamaño de la marca de agua y copia directamente a la imagen.

Ya no necesita la línea de imagen existente.

 $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 
    Intereting Posts