Biblioteca PHP para cambiar el tamaño, escalar y recortar imágenes.
Si no desea recortar, cambiar el tamaño y almacenar imágenes en su servidor, Gumlet.com es un servicio gratuito que puede procesar imágenes en tiempo real y servir en todo el mundo a través de CDN.
Este paquete está disponible a través de Packagist con el proveedor y el identificador del paquete iguales que este repositorio.
Si usa Composer, en su archivo composer.json
agregue:
{
"require" : {
"gumlet/php-image-resize" : " 2.0.* "
}
}
Si todavía usa PHP 5.3, instale la versión 1.7.0
y si está usando PHP 5.4, instale la versión 1.8.0
de esta biblioteca.
La compatibilidad con WebP se agrega con PHP 5.6.0
y la versión actual de la biblioteca lo admite. Si tiene problemas, utilice la versión 1.9.2
de esta biblioteca.
Para versiones de PHP >= 7.2, se debe utilizar la versión 2.0.1
o superior de esta biblioteca.
De lo contrario:
include ' /path/to/ImageResize.php ' ;
Debido a que esta clase usa espacios de nombres, al crear una instancia del objeto, debe usar el espacio de nombres completo:
$ image = new Gumlet ImageResize ();
O alias:
use Gumlet ImageResize ;
$ image = new ImageResize ();
Nota: esta biblioteca utiliza la clase GD que no admite el cambio de tamaño de archivos gif animados.
Para escalar una imagen, en este caso a la mitad de su tamaño (la escala se basa en porcentaje):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );
Para cambiar el tamaño de una imagen según una dimensión (manteniendo la relación de aspecto):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );
Para cambiar el tamaño de una imagen según una medida determinada independientemente de su orientación (manteniendo la relación de aspecto):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );
Para cambiar el tamaño de una imagen para que se ajuste mejor a un conjunto determinado de dimensiones (manteniendo la relación de aspecto):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );
Todas las funciones de cambio de tamaño tienen la opción $allow_enlarge
que está configurada en falso de forma predeterminada. Puede habilitarlo pasando true
a cualquier función de cambio de tamaño:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );
Si está dispuesto a manejar las relaciones de aspecto usted mismo, puede cambiar el tamaño directamente:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Esto hará que su imagen se sesgue si no usa la misma relación ancho/alto que la imagen original.
Para recortar una imagen:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
Esto escalará la imagen lo más cerca posible de las dimensiones pasadas y luego recortará y centrará el resto.
En el caso del ejemplo anterior, una imagen de 400 px × 600 px se redimensionará a 200 px × 300 px, y luego se quitarán 50 px de la parte superior e inferior, dejándote con 200 px × 200 px.
Modos de cultivo:
Hay pocas opciones de modo de recorte disponibles para que pueda elegir cómo desea manejar el eventual exceso de ancho o alto después de reducir el tamaño de su imagen. El modo de recorte predeterminado utilizado es CROPCENTER
. Como resultado, esos fragmentos de código son equivalentes:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );
En el caso de que tengas una imagen de 400px × 600px y quieras recortarla a 200px × 200px, la imagen se redimensionará a 200px × 300px, luego podrás indicar cómo deseas manejar esos 100px que exceden el valor del recorte. modo que desea utilizar.
Por ejemplo, pasar el modo de recorte CROPTOP
dará como resultado que se quiten 100 px de la parte inferior, lo que le dejará con 200 px × 200 px.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );
Por el contrario, al pasar el modo de recorte CROPBOTTOM
se quitarán 100 px de la parte superior, dejándote con 200 px × 200 px.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );
Cultivo libre:
También hay una forma de definir una posición de recorte personalizada. Puedes definir $x y $y en el método freecrop
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x = 20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );
Para cargar una imagen desde una cadena:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );
También puedes devolver el resultado como una cadena:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();
Magic __toString()
también es compatible:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;
Como se vio arriba, puede llamar $image->save('image.jpg');
Para representar la imagen directamente en el navegador, puede llamar $image->output()
;
Al guardar en el disco o enviar al navegador, el script asume el mismo tipo de salida que la entrada.
Si desea guardar/generar en un tipo de imagen diferente, debe pasar una constante PHP IMAGETYPE_
* (compatible):
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
Esto le permite guardar en un tipo diferente al fuente:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );
Las propiedades $quality_jpg
, $quality_webp
y $quality_png
están disponibles para que las configures:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Por defecto están configurados en 85 y 6 respectivamente. Consulte las entradas del manual para imagejpeg()
e imagepng()
para obtener más información.
También puedes pasar la calidad directamente a los métodos save()
, output()
y getImageAsString()
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );
Pasamos null
para el tipo de imagen en el ejemplo anterior para omitirlo y proporcionar la calidad. En este caso, se supone que el tipo de imagen es el mismo que el de entrada.
De forma predeterminada, el entrelazado de imágenes está activado. Se puede desactivar configurando $interlace
en 0
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );
Al realizar operaciones, se conserva la imagen original, de modo que pueda encadenar operaciones sin una destrucción excesiva.
Esto es útil para crear varios tamaños:
$ image = new ImageResize ( ' image.jpg ' );
$ image
-> scale ( 50 )
-> save ( ' image2.jpg ' )
-> resizeToWidth ( 300 )
-> save ( ' image3.jpg ' )
-> crop ( 100 , 100 )
-> save ( ' image4.jpg ' )
;
ImageResize lanza ImageResizeException por sí solo en busca de errores. Puede detectar eso o detectar la Exception general que se está extendiendo.
No es de esperarse, pero si algo sale terriblemente mal a mitad de camino, se puede mostrar un aviso o advertencia de error desde PHP GD y las funciones de imagen (http://php.net/manual/en/ref.image.php).
try {
$ image = new ImageResize ( null );
echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
echo " Something went wrong " . $ e -> getMessage ();
}
Puede aplicar efectos especiales a una nueva imagen, como desenfocar o agregar un banner.
$ image = new ImageResize ( ' image.jpg ' );
// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});
// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
$ logo = imagecreatefrompng ( $ image18Plus );
$ logo_width = imagesx ( $ logo );
$ logo_height = imagesy ( $ logo );
$ image_width = imagesx ( $ imageDesc );
$ image_height = imagesy ( $ imageDesc );
$ image_x = $ image_width - $ logo_width - 10 ;
$ image_y = $ image_height - $ logo_height - 10 ;
imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});
Voltea una imagen usando un modo determinado y este método es solo para PHP versión 5.4.
$ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );
$ image -> addFilter ( function ( $ image ) {
imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});
Ambas funciones se utilizarán en el orden en que se agregaron.
Puede habilitar la corrección de color gamma que está deshabilitada de forma predeterminada.
$ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );
https://gumlet.github.io/php-image-resize/index.html
Esta biblioteca es mantenida por Gumlet.com