falmar / eimage
图片上传、缩放和裁剪 PHP 类
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2023-08-03 21:39:59 UTC
README
eImage 是一个简单的 PHP 类,可以让上传和编辑图片更加容易!
这是由 Mark Jackson (mjdigital) 编写的旧类 (_image) 的重写,所有主要想法的功劳都属于他 :D
与原始类的主要变化
- 使用了所有可用的 PSR (Autoload, CodeStyle, 等...)
- 添加了异常来处理错误
- 通过将它们放入通用类方法中减少了代码部分
- 移除了过时/未使用的方法/条件/变量
要求
- PHP >= 5.4
示例
上传图片
use eImage\eImage; use eImage\eImageException; /** Upload your image **/ $File = (isset($_FILES['img'])) ? $_FILES['img'] : null; require_once('eImage/autoload.php'); try { /** * Simple Upload */ $Image = new eImage(); $Image->upload($File); /** -------------------------------------------------- */ /** * The next code will do the following: * Rename the image to my_new_image. * Place the uploaded image into base_dir/Images/ * Create a new unique image if find an existing one. * return an array with the new image properties. */ $Image = new eImage([ 'NewName' => 'my_new_name', 'UploadTo' => 'Images/', 'Duplicates' => 'u', 'ReturnType' => 'array' ]); $Image->upload($File); } catch (eImageException $e){ /** do something **/ }
注意:如果在 'NewName' 参数中没有指定扩展名,它将使用原始图片的扩展名。注意2:您可以使用 NewExtension 属性指定新的扩展名
裁剪图片
use eImage\eImage; use eImage\eImageException; /** Upload your image **/ $File = (isset($_FILES['img'])) ? $_FILES['img'] : null; require_once('eImage/autoload.php'); try { /** * Crop from upload */ $Image = new eImage(); $Image->upload($File); $Image->crop(250, 250, -50, -75); /** -------------------------------------------------- */ /** * Crop from source file */ $Image->set([ 'Source' => 'path_to_your_file.jpg', 'Prefix' => 'AfterCrop-' ]); $Image->crop(250, 250, -50, -75); } catch (eImageException $e){ /** do something **/ }
注意:如果您没有指定 NewName 或 Prefix 参数,原始图片将被新的裁剪方法覆盖。您也可以将 Duplicates 设置为 'u' 以创建新的图片而不是覆盖
缩放图片
use eImage\eImage; use eImage\eImageException; /** Upload your image **/ $File = (isset($_FILES['img'])) ? $_FILES['img'] : null; require_once('eImage/autoload.php'); try { /** * Resize from upload */ $Image = new eImage(); $Image->upload($File); $Image->resize(600, 450); /** -------------------------------------------------- */ /** * Resize from source file */ $Image->set([ 'Source' => 'my_source_image.jpg', 'Prefix' => 'AfterResize-', 'AspectRatio' => false, 'ScaleUp' => true ]); $Image->resize(600, 205); } catch (eImageException $e){ /** do something **/ }
注意:您可能需要根据需要指定 AspectRatio、Oversize、ScaleUp 等缩放属性。
参数及其默认值
public $NewName; public $UploadTo; public $ReturnType = 'full_path'; public $SafeRename = true; public $Duplicates = 'o'; private $EnableMIMEs = [ '.jpe' => 'image/jpeg', '.jpg' => 'image/jpg', '.jpeg' => 'image/jpeg', '.gif' => 'image/gif', '.png' => 'image/png', '.bmp' => 'image/bmp', '.ico' => 'image/x-icon', ]; private $DisabledMIMEs = []; public $CreateDir = false; public $Source; public $ImageQuality = 90; public $NewExtension; public $Prefix; public $NewPath; public $AspectRatio = true; public $Oversize = false; public $ScaleUp = false; public $Position = 'cc'; public $FitPad = true; public $PadColor = 'transparent';
NewName
指定您图片的新名称。
UploadTo
指定新图片将上传的位置。
ReturnType
- 'full_path':新图片的完整路径的字符串。
- 'bool':上传成功时为 true 或 false。
- 'array'
- 来自 upload() 方法:与
$_FILE数组非常相似,它将返回名称、路径、大小、tmp_name 和完整路径。 - 来自 crop() 方法:将返回名称、前缀、路径、高度、宽度和完整路径。
- 来自 resize() 方法:将返回名称、前缀、路径、高度、宽度、填充颜色和完整路径。
- 来自 upload() 方法:与
SafeRename
- true:将清理图片名称并删除奇怪的字符。
- false:新图片将包含与上传图片相同的名称。
Duplicates
如果存在文件
- 'o':覆盖文件。
- 'u':创建唯一的文件。
- 'e':抛出 eImageException。
EnabledMIMEs
包含 eImage 类将允许上传的 MIME 类型的数组。
['.jpg' => 'image/jpg']
DisabledMIMEs
如果设置此属性,将禁止上传指定的MIME类型或扩展。
注意:此处未设置的任何其他MIME类型或扩展都将允许上传。
来源
图像上传后自动设置的完整文件路径,以便于访问、调整大小和裁剪。
创建目录
如果设置为true,则不存在时创建目录(UploadTo | NewPath)。
图像质量
整数[1-100]%。
新扩展名
应用新的扩展名到图像(.jpg, .png, .gif)。
前缀
指定图像的新前缀。
新路径
指定新图像的路径,仅适用于crop()和resize()方法。
宽高比
设置true或false以保持或取消图像的宽高比。
超过大小
如果为true,则当宽度 > 高度或反之时,将放大图像。
缩放
设置为true以允许图像从小尺寸放大到更大尺寸。
填充颜色
如果图像不适应画布,则为图像背景的十六进制颜色字符串,默认为'transparent'。
适应填充
设置为true以在新的尺寸不适应且宽高比为true时,利用位置使图像适应画布。
位置
在画布中设置源的位置
- 'tr': 右上角
- 'tl': 左上角
- 'tc': 右上角
- 'br': 右下角
- 'bl': 左下角
- 'bc': 右下角
- 'cr': 中右
- 'cl': 中左
- 'cc': 水平和垂直居中