Giter VIP home page Giter VIP logo

gimage's Introduction

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

gimage's People

Contributors

franklee0902 avatar joseluisq avatar matiit avatar sunnyphp avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.