He encontrado algunas cosas en la web sobre PHP + GD con respecto a la manipulación de imágenes, pero ninguna parece darme lo que estoy buscando.php GD agregar relleno a la imagen
Tengo que subir una imagen de cualquier tamaño, el script que he escrito cambia el tamaño de la imagen a no más de 200px de ancho por 200px de alto manteniendo la relación de aspecto. Así que la imagen final podría ser de 150px por 200px, por ejemplo. Lo que quiero hacer es manipular la imagen más adelante y agregar una estera alrededor de la imagen para rellenarla a 200px por 200px sin afectar la imagen original. Por ejemplo:
El código que tiene que conseguir la imagen redimensionada es aquí, he intentado un par de cosas, pero definitivamente estoy teniendo una edición implementar el proceso secundario de añadir el relleno .
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$image,80);
chmod($image, 0777);
Pienso que necesito utilizar imagecopy()
justo después de la llamada imagecopyresampled()
. De esta manera, la imagen ya es del tamaño que quiero, solo necesito crear una imagen exactamente 200 x 200 y pegar $ newImage en el centro (vert y horiz) de eso. ¿Necesito crear una imagen completamente nueva y fusionar las dos, o hay una manera de simplemente rellenar la imagen que ya he creado ($newImage
)? Gracias de antemano, todos los tutoriales que he encontrado me han llevado a ninguna parte, y la única aplicable he encontrado en SO era para android :(
la idea de la declaración de cambio fue excelente, definitivamente es más eficiente que mi declaración de cambio. Sin embargo, estoy confundido acerca de la imagencopia revisada. El cambio de tamaño de la imagen original está completo y funcionando, solo se pega sobre un fondo de 200x200 px. Según entiendo, ¿la imagen copiada a escala cambiará el tamaño de la imagen original otra vez? – MaurerPower
ver respuesta actualizada – bumperbox
¡Eso funcionó muy bien! Terminé usando un poco de una versión modificada para obtener los resultados exactos que quería, ¡pero esto me llevó definitivamente al buen camino! Gracias bumberbox! ¡Aceptado y votado! – MaurerPower