Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
80.00% covered (success)
80.00%
16 / 20
60.00% covered (warning)
60.00%
6 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 1
Image
80.00% covered (success)
80.00%
16 / 20
60.00% covered (warning)
60.00%
6 / 10
14.35
0.00% covered (danger)
0.00%
0 / 1
 getAvailableAdapters
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 isAvailable
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
4
 loadGd
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 loadImagick
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 loadGdFromString
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 loadImagickFromString
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 createGd
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createGdIndex
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createImagick
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 createImagickIndex
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2023 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Image;
15
16/**
17 * Image factory class
18 *
19 * @category   Pop
20 * @package    Pop\Image
21 * @author     Nick Sagona, III <dev@nolainteractive.com>
22 * @copyright  Copyright (c) 2009-2023 NOLA Interactive, LLC. (http://www.nolainteractive.com)
23 * @license    http://www.popphp.org/license     New BSD License
24 * @version    3.4.0
25 */
26class Image
27{
28
29    /**
30     * Get the available image adapters
31     *
32     * @return array
33     */
34    public static function getAvailableAdapters()
35    {
36        return [
37            'gd'      => function_exists('gd_info'),
38            'imagick' => (class_exists('Imagick', false))
39        ];
40    }
41
42    /**
43     * Determine if the adapter is available
44     *
45     * @param  string $adapter
46     * @return boolean
47     */
48    public static function isAvailable($adapter)
49    {
50        $result = false;
51
52        switch (strtolower($adapter)) {
53            case 'gd':
54                $result = function_exists('gd_info');
55                break;
56            case 'imagemagick':
57            case 'imagick':
58                $result = (class_exists('Imagick', false));
59                break;
60        }
61
62        return $result;
63    }
64
65    /**
66     * Load the image resource from the existing image file into a Gd object
67     *
68     * @param  string $image
69     * @return Adapter\Gd
70     */
71    public static function loadGd($image)
72    {
73        return Gd::load($image);
74    }
75
76    /**
77     * Load the image resource from the existing image file into a Imagick object
78     *
79     * @param  string $image
80     * @return Adapter\Imagick
81     */
82    public static function loadImagick($image)
83    {
84        return Imagick::load($image);
85    }
86
87    /**
88     * Load the image resource from data into a Gd object
89     *
90     * @param  string $data
91     * @param  string $name
92     * @return Adapter\Gd
93     */
94    public static function loadGdFromString($data, $name = null)
95    {
96        return Gd::loadFromString($data, $name);
97    }
98
99    /**
100     * Load the image resource from data into a Imagick object
101     *
102     * @param  string $data
103     * @param  string $name
104     * @return Adapter\Imagick
105     */
106    public static function loadImagickFromString($data, $name = null)
107    {
108        return Imagick::loadFromString($data, $name);
109    }
110
111    /**
112     * Create a new image resource and load it into a Gd object
113     *
114     * @param  int    $width
115     * @param  int    $height
116     * @param  string $image
117     * @return Adapter\Gd
118     */
119    public static function createGd($width, $height, $image = null)
120    {
121        return Gd::create($width, $height, $image);
122    }
123
124    /**
125     * Create a new indexed image resource and load it into a Gd object
126     *
127     * @param  int    $width
128     * @param  int    $height
129     * @param  string $image
130     * @return Adapter\Gd
131     */
132    public static function createGdIndex($width, $height, $image = null)
133    {
134        return Gd::createIndex($width, $height, $image);
135    }
136
137    /**
138     * Create a new image resource and load it into a Imagick object
139     *
140     * @param  int    $width
141     * @param  int    $height
142     * @param  string $image
143     * @return Adapter\Imagick
144     */
145    public static function createImagick($width, $height, $image = null)
146    {
147        return Imagick::create($width, $height, $image);
148    }
149
150    /**
151     * Create a new indexed image resource and load it into a Imagick object
152     *
153     * @param  int    $width
154     * @param  int    $height
155     * @param  string $image
156     * @return Adapter\Imagick
157     */
158    public static function createImagickIndex($width, $height, $image = null)
159    {
160        return Imagick::createIndex($width, $height, $image);
161    }
162
163}