Esta clase es una alternativa al paquete Intervention Image para trabajar más flexiblemente con texto en la imagen. Úselo si necesita ajustar el texto en un área determinada, calcular automáticamente el tamaño de fuente y cambiar la altura de la línea . El método de dibujo de texto también sabe cómo devolver el tamaño real de las inscripciones, lo que permitirá, por ejemplo, colocar bloques uno debajo del otro.
Además del trabajo flexible con texto, la clase proporciona una API de imágenes similar al paquete Intervención. Incluyendo cambio de tamaño de carteles inteligente, filtros, dibujo de formas y superposición de otras imágenes.
Si no utiliza Composer en su trabajo, también le puede interesar la simplicidad de la clase y la ausencia de dependencias. Tenga en cuenta que esta clase solo admite el controlador PHP-GD. También puedes heredar fácilmente tu clase: todos los métodos del padre se pueden anular.
La mejor manera de instalar poster editor es rápida y fácilmente con Composer.
Sin embargo, puede solicitar la clase directamente sin utilizar un cargador; esto no afectará el rendimiento de ninguna manera.
php composer.phar require antonlukin/poster-editor
En caso de error, los métodos de la clase devuelven una excepción.
Por lo tanto, es mejor llamarlos dentro de un bloque try..catch .
// Using composer
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Or directly
// require_once __DIR__ . '/PosterEditor.php';
try {
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 600 , 600 );
$ image -> show ();
} catch ( Exception $ e ) {
echo $ e -> getMessage ();
} $image->get()
Obtenga un recurso de imagen para usar comandos gd sin formato.
$image->set(instance $resourse)
Configure el recurso de imagen después de usar comandos gd sin formato.
$image->make(mixed $data)
Cree una nueva instancia de imagen a partir de un archivo o datos binarios.
$image->insert(mixed $data, array $options = array())
Pegue una fuente de imagen determinada sobre la imagen actual con una posición opcional. El primer parámetro puede ser datos binarios o una ruta al archivo u otra instancia de clase. Opciones es una matriz de coordenadas de desplazamiento relativo x/y desde la esquina superior izquierda y opacidad de 0 a 100, donde 0 no es transparencia. Por defecto la imagen estará centrada.
$image->canvas(int $width, int $height, array $options = array())
Inicialice el lienzo por ancho y alto. Las opciones de color de fondo están en una variedad de configuraciones de color/opacidad. Por defecto lienzo negro sin opacidad.
$image->show(string $format = null, int $quality = 90)
Envía una respuesta HTTP con la imagen actual en el formato y la calidad determinados. El formato es una extensión de imagen de archivo. De forma predeterminada, los datos de respuesta se codificarán en el tipo de imagen actual. Si aún no se ha definido ningún tipo de imagen, el método devolverá datos codificados en jpeg. La calidad está normalizada para todos los tipos de archivos en un rango de 0 (mala calidad, archivo pequeño) a 100 (mejor calidad, archivo grande). El valor predeterminado es 90. El formato PNG no tiene pérdidas y la calidad afecta sólo al tamaño de la imagen y la velocidad de compresión.
$image->save(string $path, int $quality = 90, string $format = null)
Guarde el estado actual del objeto de imagen en el sistema de archivos. Defina opcionalmente una ruta determinada donde se debe guardar la imagen. El tipo de imagen se definirá por la extensión del archivo. Si no hay ninguna extensión disponible, los datos de respuesta se codificarán en el tipo de imagen actual. Si aún no se ha definido ningún tipo de imagen, el método devolverá datos codificados en jpeg. Opcionalmente, puede anular esto con el parámetro de formato. La calidad está normalizada para todos los tipos de archivos en un rango de 0 (mala calidad, archivo pequeño) a 100 (mejor calidad, archivo grande). El valor predeterminado es 90. El formato PNG no tiene pérdidas y la calidad afecta sólo al tamaño de la imagen y la velocidad de compresión.
$image->destroy()
Libera la memoria asociada con la instancia de la imagen actual antes de que finalice el script PHP. Normalmente los recursos se destruyen automáticamente una vez finalizado el script.
$image->width()
Devuelve la altura en píxeles de la imagen actual.
$image->height()
Devuelve la altura en píxeles de la imagen actual.
$image->resize(int $width, int $height)
Cambia el tamaño de la imagen actual según el ancho y alto dados. No presta atención a la relación de aspecto. Para cambiar el tamaño proporcionalmente, utilice métodos upsize y downsize .
$image->upsize(int $width = null, int $height = null)
Imagen ampliada en el lado más grande. Calculado por relación para ancho o alto anulado.
$image->downsize(int $width = null, int $height = null)
Imagen reducida en el lado más grande. Calculado por relación para ancho o alto anulado.
$image->crop(int $width, int $height, array $options = array())
Recorta una parte rectangular de la imagen actual con el ancho y alto dados. Defina coordenadas x,y opcionales para mover la esquina superior izquierda del recorte a una posición determinada.
$image->fit(int $width, int $height, string $position = 'center')
Combine recortar y cambiar el tamaño para formatear la imagen de forma inteligente. El método encontrará automáticamente la relación de aspecto que mejor se ajuste a la imagen actual, la recortará y cambiará su tamaño a la dimensión dada. Posibles posiciones top-left , top , top-right , bottom-left , bottom , bottom-right , right , left y center de forma predeterminada.
$image->line(int $x1, int $y1, int $x2, int $y2, array $options = array())
Dibuja una línea desde el punto 1 x,y hasta el punto 2 x,y en la imagen actual. Utilice el parámetro de opciones para establecer valores de color, opacidad y ancho.
$image->rectangle(int $x, int $y, int $width, int $height, array $options = array())
Dibuja un rectángulo coloreado en la imagen actual. Utilice el parámetro de opciones para establecer valores de color, opacidad, grosor y contorno.
$image->ellipse(int $x, int $y, int $width, int $height, array $options = array())
Dibuja una elipse. Utilice el parámetro de opciones para establecer valores de color, opacidad y contorno.
$image->brightness(int $level = 0)
Cambie el brillo de la imagen actual según el nivel dado. Utilice valores entre -100 para brillo mínimo, 0 para ningún cambio y +100 para brillo máximo.
$image->contrast(int $level = 0)
Cambie el contraste de la imagen actual según el nivel dado. Utilice valores entre -100 para contraste mínimo, 0 para ningún cambio y +100 para contraste máximo.
$image->grayscale()
Convierte una imagen en una versión en escala de grises.
$image->blur()
Aplica un efecto de imagen borrosa.
$image->invert()
Invertir colores de una imagen.
$image->blackout()
Dibuja un rectángulo de opacidad negro en la imagen.
$image->rotate(int $angle, array $options = array())
Girar imagen. Establezca un ángulo en grados y un color opcional de la zona descubierta después de la rotación.
$image->text(string $text, array $options = array(), array &$boundary = array())
Dibuja texto en la imagen. Posibles opciones:
Utilice el límite para obtener las dimensiones reales del cuadro de texto dibujado. Vea ejemplos detallados a continuación.
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 , ' bottom ' )-> blackout ( 50 );
$ logo = new PosterEditor PosterEditor ();
$ logo -> make ( ' images/logo.png ' )-> downsize ( 150 , null );
$ image -> insert ( $ logo , array ( ' x ' => 50 , ' y ' => 50 ))-> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 );
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat Lorem ipsum dolor sit amet ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 1000 ,
' height ' => 400 ,
' horizontal ' => ' center ' ,
' vertical ' => ' center ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 24 ,
' lineheight ' => 1.75 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' jpg ' , 70 );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 900 , 600 );
$ image -> blackout ( 70 );
$ image -> text (
' Lorem ipsum dolor d d 4 g sit amet, consectetur adipiscing et, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eas commodo consequat sdfsdfl ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 600 ,
' height ' => 400 ,
' horizontal ' => ' justify ' ,
' vertical ' => ' justify ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' png ' );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> crop (
900 , 600 ,
array (
' x ' => ' 0 ' ,
' y ' => ' 100 '
)
);
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Large title with unknown height. Can be multi-line ' ,
array (
' x ' => 50 ,
' y ' => 100 ,
' width ' => 800 ,
' fontpath ' => ' /fonts/merriweather.ttf ' ,
' fontsize ' => 48 ,
' lineheight ' => 1.5 ,
' color ' => ' #9999ff ' ,
),
$ boundary
);
$ image -> text (
' This text appears right after title using smart boundaries ' ,
array (
' x ' => 50 ,
' y ' => $ boundary [ ' y ' ] + $ boundary [ ' height ' ],
' width ' => 800 ,
' fontpath ' => ' /fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ff9999 ' ,
),
$ boundary
);
$ image -> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1000 , 630 , ' bottom ' );
$ image -> contrast ( 5 )-> brightness (- 30 )-> blur ();
$ image -> rectangle (
20 , 20 , 960 , 590 ,
array (
' color ' => ' #ffffff ' ,
' outline ' => true ,
' width ' => 4 ,
)
);
$ image -> ellipse (
200 , 200 , 200 , 200 ,
array (
' color ' => ' #00ff00 ' ,
' opacity ' => 50 ,
)
);
$ image -> ellipse (
800 , 200 , 200 , 200 ,
array (
' color ' => ' #ff0000 ' ,
' opacity ' => 50 ,
)
);
$ image -> rectangle (
480 , 280 , 80 , 140 ,
array (
' color ' => ' #0000ff ' ,
)
);
$ image -> line (
200 , 500 , 800 , 500 ,
array (
' color ' => array ( 255 , 255 , 0 ),
' opacity ' => 10 ,
' width ' => 4 ,
)
);
$ image -> show ( ' png ' );
Todo el código del proyecto se almacena en Github. La mejor manera de ayudar al proyecto es informar un error o agregar alguna funcionalidad nueva. También puede abrir aquí un problema o enviar una solicitud de extracción.