2012-01-06 26 views
6

Tengo una imagen con tamaño 88x31 y me gustaría hacerlo 100x100 sin cambiar el tamaño de la imagen real, pero solo su lienzo/marco, tal vez copiándolo en el centro de la nueva imagen blanca en blanco con tamaño 100x100. ¿Alguna idea de como hacerlo?PHP GD - cambio de tamaño de marco/imagen de imagen pero no la imagen real

+0

no vuelven a reinventar la rueda, utilice el código existente: https://github.com/avalanche123/Imagine, pero si insiste, hay una gran cantidad de preguntas similares sobre SO que han sido respondidas. –

+1

posible duplicado de [Crear una imagen con GD que contenga otras imágenes] (http://stackoverflow.com/questions/2933170/create-a-picture-with-gd-containing-other-images) –

+0

el problema con Imagine es el espacio de nombres soporte que mi PHP no tiene en este momento y no quiero actualizar todavía, pero gracias. – Marcin

Respuesta

7

El método correcto es crear una nueva imagen y luego copiar la imagen antigua en el centro de la misma (suponiendo que la imagen de partida es un JPEG inferior a 100x100):

$oldimage = imagecreatefromjpeg($filename); 
$oldw = imagesx($oldimage); 
$oldh = imagesy($oldimage); 

$newimage = imagecreatetruecolor(100, 100); // Creates a black image 

// Fill it with white (optional) 
$white = imagecolorallocate($newimage, 255, 255, 255); 
imagefill($newimage, 0, 0, $white); 

imagecopy($newimage, $oldimage, (100-$oldw)/2, (100-$oldh)/2, 0, 0, $old, $oldh); 
Cuestiones relacionadas