/gimage

A PHP library for easy image handling.

Primary LanguagePHPMIT LicenseMIT

GImage

Build Status Latest Stable Version Latest Unstable Version Total Downloads License

A PHP library for easy image handling.

A simple presentation card with GImage

Presentation card built with GImage - view sample code

Features

GImage is a simple and small library based on PHP Image Processing and GD for processing images without stress.

  • Load an image from local path, URL or image resource.
  • Create shapes such as rectangles or ellipses with opacity.
  • Resize, scale or crop images proportionally.
  • Rotate images, shapes or texts.
  • Embed text with custom TTF fonts.
  • Compose a pool of images with Canvas.
  • Swap image formats such as JPEG, PNG or GIF.
  • Save images in local or output on the browser.
  • Save several copies of the same image.
  • Render an image in-memory and return the resource.

Requirements

GImage requires PHP 7.x and latest GD Extension.

Install

composer require joseluisq/gimage

Usage

Image

Working with an external JPG image and output it on browser as PNG format:

<?php

use GImage\Image;

$avatar = new Image();
$avatar
	// Loading a JPEG image (200x200) from an URL (or local path too)
	->load('http://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50?s=200.jpg')
	// Scaling to 50% (100x100)
	->scale(50)
	// Set 50% of opacity
	->setOpacity(0.5)
	// Changing the format to PNG
	->toPNG()
	// Preserving the image before saving or outputting
	->preserve()
	// Saving to local path
	->save('octocat.png')
	// Preparing for destroy the resource after outputting
	->preserve(false)
	// Outputting on the browser and destroy the resource.
	->output();

Figure

Creating a green ellipse:

<?php

use GImage\Figure;

// Setting ellipse sizes
$ellipse = new Figure(500, 300);
$ellipse
	// Set ellipse type
	->isEllipse()
	// Setting a green RGB color
	->setBackgroundColor(170, 188, 147)
	// Creating the figure
	->create()
	// Outputting image (PNG Figure by default) on the browser.
	->output();

Text

Creating a rectangle with Text embedded:

<?php

use GImage\Text;
use GImage\Figure;
use GImage\Canvas;

$figure = new Figure(400, 250);
$figure
    ->isRectangle()
    ->setBackgroundColor(47, 42, 39)
    ->create();

$text = new Text('My awesome text!');
$text
    ->setWidth(400)
    ->setHeight(250)
    ->setLineHeight(1.2)
    ->setAlign('center')
    ->setValign('center')
    ->setSize(22)
    ->setColor(255, 255, 255)
    ->setFontface('./fonts/Lato-Bol.ttf');

$canvas = new Canvas($figure);
$canvas
    ->append($text)
    ->toPNG()
    ->draw()
    ->save('./text.png');

Creating a simple presentation card

Presentation card example using Image, Canvas, Figure and Text.

<?php

use GImage\Image;
use GImage\Text;
use GImage\Figure;
use GImage\Canvas;

$avatar_image = new Image();
$avatar_image
	->load('http://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50?s=100.jpg')
	->setTop(60)
	->setLeft(70);

$about_text = new Text("MY AWESOME PRESENTATION CARD GENERATED WITH GIMAGE");
$about_text
	->setSize(16)
	->setWidth(300)
	->setLeft(210)
	->setTop(75)
	->setColor(204, 164, 116)
	->setFontface('fonts/Lato-Light.ttf');

$twitter_text = new Text('@username');
$twitter_text
	->setSize(11)
	->setWidth(70)
	->setLeft(450)
	->setTop(210)
	->setColor(130, 127, 125)
	->setFontface('fonts/Lato-Regular.ttf');

$canvas_figure = new Figure(550, 250);
$canvas_figure
	->setBackgroundColor(47, 42, 39)
	->create();

$avatar_box = new Figure($avatar_image->getWidth() + 16, $avatar_image
	->getHeight() + 17);
$avatar_box
	->setBackgroundColor(63, 56, 52)
	->setLeft($avatar_image->getLeft() - 7)
	->setTop($avatar_image->getTop() - 8)
	->create();

$avatar_box2 = new Figure($avatar_image->getWidth() + 3, $avatar_image
	->getHeight() + 19);
$avatar_box2
	->setBackgroundColor(79, 72, 67)
	->setLeft($avatar_image->getLeft() + 7)
	->setTop($avatar_image->getTop() - 9)
	->create();

$avatar_box3 = new Figure(120, 240);
$avatar_box3
	->setBackgroundColor(63, 56, 52)
	->create();

$line_vertical = new Figure(600, 10);
$line_vertical
	->setBackgroundColor(119, 99, 77)
	->setTop(240)
	->create();

$line_horizontal = new Figure(1, 240);
$line_horizontal
	->setBackgroundColor(79, 72, 67)
	->setLeft(120)
	->create();

$canvas = new Canvas($canvas_figure);
$canvas
	->append([
	  $line_horizontal,
	  $avatar_box2,
	  $avatar_box3,
	  $avatar_box,
	  $avatar_image,
	  $about_text,
	  $twitter_text,
	  $line_vertical
	])
	->toPNG()
	->draw()
	->save('./card.png');

For more examples check out the ./examples dir.

Changelog

Check out the CHANGELOG.md file.

Documentation

View the documentation API

Contribution

If you would like to contribute pull requests and issues will be welcome! Feature requests are welcome. Please before sending some feature requests make sure provide as much detail and context as possible.

License

MIT license

© 2015-2017 José Luis Quintana