benmajor / php-image-resize
一个简单的PHP类,用于处理图像缩放和编辑。
Requires
- php: >= 5.6.0
This package is auto-updated.
Last update: 2024-08-28 11:06:40 UTC
README
ImageResize是一个简单的PHP类,可用于使用PHP的本地GD库即时缩放图像。该库还可以自动为您的图像添加水印和文字叠加。
此类的唯一依赖项是您的服务器上安装了GD库。您必须运行PHP >= 5.6。
目录
1. 版本历史
-
版本 1.1.0 (2018-05-13)
- 添加了文字叠加支持
- 添加了水印支持
- 向Image类添加了getAverageColor()方法。
- 小错误修复
-
版本 1.0.0 (2018-05-09)
- 该库正式发布,并添加到Github、Packagist和Composer。
2. 安装
安装库最简单的方法是使用Composer
$ composer require benmajor/php-image-resize
或者直接从本仓库的src/目录下载PHP包。
3. 入门
要开始,调用构造函数,并传递一个有效图像的路径给它
<?php
use BenMajor\ImageResize\Image;
$image = new Image('http://example.com/image.jpg');
注意:为了使用远程URL,您的PHP配置必须启用allow_url_fopen指令。如果此指令被禁用,构造函数将抛出一个致命错误,指出源图像不存在。
一旦创建了一个新的ImageResize对象,就可以对图像执行功能(这些功能在第四部分中列出)。在将函数和缩放方法应用于图像后,您可以使用output(*)和download(*)方法分别将生成的图像文件输出到浏览器,或强制用户计算机下载。
要了解更多关于库的使用方法,请参阅本仓库中的examples目录。
4. 图像方法参考
注意:方法调用的顺序通常无关紧要,但您应该始终将output(*)或download(*)函数作为最后一个调用,以避免出现意外行为。
以下是在ImageResize对象上可能调用的各种方法的列表。有关更多信息和使用示例,请参阅本仓库examples目录中的示例。
注意:一些方法仅影响某些缩放技术。在这种情况下,方法参考中已添加注释。
缩放方法
resize( $width, $height ):
将图像缩放到指定的尺寸,忽略纵横比。如果$height为null,则将生成正方形图像,使用$width作为宽度和高度。
resizeWidth( $width ):
将图像缩放到$width像素宽,并计算生成的图像的高度以保持原始纵横比。
resizeHeight( $height ):
将图像调整到$height像素高,并计算生成图像的宽度以保持原始的宽高比。
resizeCrop( $width, $height ):
调整图像大小并自动裁剪到指定尺寸。这在生成缩略图和小尺寸图像时特别有用,其中输出大小受到限制,但原始图像的宽高比应保持不变。
如果$height为null,将生成一个正方形图像,输出宽度和高度都使用$width。
contain( $width, $height ):
创建一个大小为$width × $height像素的画布,并按比例调整图像以确保整个图像适合画布并居中调整后的图像。如果$height为null,将生成一个正方形图像,输出宽度和高度都使用$width。
输出方法
output( $cache = false):
使用原始MIME类型输出图像。
$cache可以用作目录指针。如果$cache指定为字符串,则调整大小的图像将被写入$cache中指定的目录,而不是输出到缓冲区。
outputJPEG( $cache = false):
将图像输出为JPEG格式。
$cache可以用作目录指针。如果$cache指定为字符串,则调整大小的图像将被写入$cache中指定的目录,而不是输出到缓冲区。
outputPNG( $cache = false ):
将图像输出为PNG格式。
$cache可以用作目录指针。如果$cache指定为字符串,则调整大小的图像将被写入$cache中指定的目录,而不是输出到缓冲区。
outputGIF( $cache = false ):
将图像输出为GIF格式。
$cache可以用作目录指针。如果$cache指定为字符串,则调整大小的图像将被写入$cache中指定的目录,而不是输出到缓冲区。
outputHTML( bool $tag, string $alt, string $title, bool $echo ):
生成<img>元素所需的标记,并Base64编码调整大小的图像。接受以下(可选)参数
$tag:包含HTML标签。如果false,则仅返回Base64 URL。
默认:true。$alt:包含生成元素alt属性值的字符串。
默认:null。$title:包含用于生成元素title属性的字符串。
默认:null。$echo:布尔值,表示是否应同时输出(返回)标签。默认:true。
下载方法
download( $filename = null ):
强制浏览器通过其原始MIME类型下载图像(而不是内联显示)。
如果$filename为null,则使用原始文件名,或传递字符串以在下载对话框中强制使用不同的文件名。扩展名不是必需的。
downloadJPEG( $filename = null ):
强制浏览器以JPEG图像的形式下载图像。
如果$filename为null,则使用原始文件名,或传递字符串以在下载对话框中强制使用不同的文件名。扩展名不是必需的。
downloadPNG( $filename = null ):
强制浏览器以PNG图像的形式下载图像。
如果$filename为null,则使用原始文件名,或传递字符串以在下载对话框中强制使用不同的文件名。扩展名不是必需的。
downloadGIF( $filename = null ):
强制浏览器以GIF图像的形式下载图像。
如果$filename为null,则使用原始文件名,或传递字符串以在下载对话框中强制使用不同的文件名。扩展名不是必需的。
编辑方法
setPadding( $padding ):
设置在使用contain()调整大小方法时应使用的填充(以像素为单位)。
setTransparency( bool $transparency ):
设置图像调整大小器是否应保持透明度(仅对透明PNG或GIF源图像有效)。
disableRename():
在将调整大小的图像保存到服务器时,不要自动重命名缓存图像。
enableRename():
启用在保存到服务器时自动重命名缓存图像。
setTmpDir():
设置工作时的临时目录。默认情况下,临时目录是sys_get_temp_dir()返回的值。
setQuality():
设置生成图像的输出质量。整数应该是100的值。默认值是100。
setBackgroundColor( string $bg ):
设置用于contain()或其他方法的背景颜色。它应该作为十六进制颜色字符串传递。如果禁用透明度,则透明GIF或PNG将使用此颜色作为背景颜色。
setBorder( $width, $color ):
为生成的图像添加边框。 $width 应该是一个表示边框像素宽度的整数。 $color 应该是一个十六进制字符串。
setBorderWidth( $width ):
设置边框的宽度。 $width 应该是一个表示边框像素宽度的整数。
setBorderColor( $color ):
设置生成边框的颜色。 $color 应该是一个包含十六进制值的字符串(例如 #000)。
过滤器方法
除了调整图像大小,此库还提供了基本编辑和过滤器功能。本参考显示所有当前支持的过滤器方法
greyscale():
将图像转换为灰度(黑白)。
invert():
反转图像中的颜色。
setBrightness( int $brightness ):
更改图像的亮度(接受任何有效的整数值)。使用 PHP 的 IMG_FILTER_BRIGHTNESS 常量。
setContrast( int $contrast ):
更改图像的对比度(接受任何有效的整数值)。使用 PHP 的 IMG_FILTER_CONTRAST 常量。
setSaturation( float $saturation ):
增加或减少图像的饱和度。由于 GD 不提供内置的更改饱和度的方法,我们只能通过手动设置图像中每个像素的颜色值来实现这一点。
注意:如果您没有缓存图像,此函数可能会导致图像渲染缓慢,尤其是较大的图像。
colorize( $color ):
使用指定的 $color 对图像进行上色。 $color 应该是一个包含有效的十六进制颜色定义的字符串。
获取方法
getBorder():
获取图像边框的当前设置(返回一个包含 width 和 color 属性的对象)。
getBorderWidth():
获取图像边框的当前宽度(以像素为单位)。
getBorderColor():
获取图像边框的当前颜色(作为数组)。
getTmpDir():
返回表示当前工作目录的字符串。
getQuality():
获取当前质量设置。
getTransparency():
检查是否启用了透明度。
getPadding():
获取当前填充的像素值。
getOutputWidth():
获取生成图像的宽度。
注意:必须在调用调整大小函数之后调用此函数。
getOutputHeight():
获取生成图像的高度。
注意:必须在调用调整大小函数之后调用此函数。
getImgTagAttributes():
返回一个包含调整大小后的图像尺寸属性的字符串,用于 <img /> 标签(例如 width="x" height="x")。 注意:必须在调用调整大小函数之后调用此函数。
getAverageColor():
返回图像的平均颜色作为十六进制字符串(例如 #ff00ff)。
5. 文本方法参考
除了提供调整大小函数外,此库还允许在调整大小前后将文本(包括可选的边界框)写入图像。文本使用以下方式定义 Text 类
<?php
$image = new Image('image_src');
$text = new Text('My String');
$image->addText( $text );
$image->output();
有关更多信息和解说,请查阅 Github 仓库中的 examples 目录。
以下是在 Text 对象上支持的方法列表
设置方法
setText( string $text ):
设置要渲染的文本。
setFont( string $src ):
设置用于渲染文本的 TTF 字体的 URL。
必须指向一个有效的 TTF 字体文件 -- 可以是远程的。
setColor( string $hex ):
使用有效的十六进制字符串设置文本的前景色。
setBackgroundColor( string $hex ):
使用有效的十六进制字符串设置边界框的背景颜色。
setBackgroundOpacity( int $opacity ):
设置背景的 % 透明度。
setPadding( int $padding ):
设置边界框的填充(单位为 px)。
setPosition( mixed $position ):
设置图像上文本的位置。接受物理像素坐标(分别通过 x 和 y 索引的数组),或以下字符串值之一
t- 居中,顶部tr- 右上角r- 居中,右侧br- 右下角b- 居中,底部bl- 左下角l- 居中,左侧tl- 左上角c- 完全居中
setWidth( mixed $width ):
设置边界框的宽度。可以是 'auto',或表示图像百分比宽度的整数。自动将边界框大小调整为适合内容。
setTextAlign( string $align ):
设置边界框内文本的对齐方式。接受包含 left、center 或 right 的字符串。
获取方法
getText():
以字符串形式返回要渲染的文本。
getFont():
获取当前正在使用的字体URL。(默认:https://github.com/CartoDB/cartodb/blob/master/app/assets/fonts/helvetica.ttf?raw=true)。
getFontSize():
获取当前用于文本的字体大小(以点为单位)。
getColor():
获取当前分配的前景色。(返回一个RGB颜色值的数组)。
getBackgroundColor():
获取当前用于文本边界框的背景颜色。
getPadding():
获取边界框填充。
getPosition():
获取要在原始图像上渲染的文本的位置。
getWidth():
获取边界框的宽度。
getTextAlign():
获取边界框内文本的对齐方式。
6. 水印方法参考
水印可用于保护您的图像或使不诚实的网络用户难以简单地盗用。然而,手动添加水印到图像可能是费力的,如果您决定使用新的标志或水印,您需要重新做所有这些!这就是我决定将水印支持添加到库中的原因。
添加水印很简单;只需指定要使用的水印标志的URL,并将其添加到图像中
<?php
$image = new Image('image_src');
$watermark = new Watermark('watermark_src');
$image->addWatermark( $watermark );
$image->output();
为了获得最佳效果,建议使用透明的PNG图像作为水印的源。
有关更多信息和解说,请查阅 Github 仓库中的 examples 目录。
以下是支持 Watermark 对象的方法列表
设置方法
setMargin( int $margin ):
设置水印使用的边距。
setOpacity( int $opacity ):
设置水印使用的透明度百分比。
setPosition( mixed $position ):
设置水印在图像上的位置。接受物理像素坐标(分别通过 x 和 y 索引的数组),或以下字符串值之一
t- 居中,顶部tr- 右上角r- 居中,右侧br- 右下角b- 居中,底部bl- 左下角l- 居中,左侧tl- 左上角c- 完全居中
setWidth( int $width, bool $constrain = true ):
设置水印调整大小的宽度,并可选地约束其比例。
setHeight( int $height, bool $constrain = true ):
设置水印调整大小的高度,并可选地约束其比例。
获取方法
getMargin():
获取水印边距的像素值。
getOpacity():
获取水印的透明度百分比。
getPosition():
获取水印的位置。
getWidth():
获取水印调整大小的宽度。如果您正在约束调整大小,这可能很有用。
getHeight():
获取水印调整大小的高度。如果您正在约束调整大小,这可能很有用。
7. 要求
库需要PHP >= 5.6,并且需要在目标服务器上安装并启用PHP GD扩展。
8. 错误 & 特性
如果您发现任何错误,或者想要从库中请求额外的功能,请通过项目的Github页面上的问题跟踪器提交问题:[https://github.com/benmajor/PHP-Image-Resize/issues](https://github.com/benmajor/PHP-Image-Resize/issues)。
9. 许可证
许可协议为 MIT许可证
以下条件之下,任何人无需付费即可获得本软件及其相关文档文件的副本(以下简称“软件”),并可以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向软件提供者提供的人进行此类操作:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的还是法定的,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论基于合同、侵权或其他原因,源于、因或与软件或软件的使用或其他操作有关。