benmajor/php-image-resize

一个简单的PHP类,用于处理图像缩放和编辑。

1.1.2 2019-07-03 09:27 UTC

This package is auto-updated.

Last update: 2024-08-28 11:06:40 UTC


README

ImageResize是一个简单的PHP类,可用于使用PHP的本地GD库即时缩放图像。该库还可以自动为您的图像添加水印和文字叠加。

此类的唯一依赖项是您的服务器上安装了GD库。您必须运行PHP >= 5.6

Latest Version Software License

目录

  1. 版本历史
  2. 安装
  3. 入门
  4. 图像方法参考
  5. 文字方法参考
  6. 水印方法参考
  7. 要求
  8. 错误和功能
  9. 许可证

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 ):
将图像缩放到指定的尺寸,忽略纵横比。如果$heightnull,则将生成正方形图像,使用$width作为宽度和高度。

resizeWidth( $width ):
将图像缩放到$width像素宽,并计算生成的图像的高度以保持原始纵横比。

resizeHeight( $height ):
将图像调整到$height像素高,并计算生成图像的宽度以保持原始的宽高比。

resizeCrop( $width, $height ):
调整图像大小并自动裁剪到指定尺寸。这在生成缩略图和小尺寸图像时特别有用,其中输出大小受到限制,但原始图像的宽高比应保持不变。
如果$heightnull,将生成一个正方形图像,输出宽度和高度都使用$width

contain( $width, $height ):
创建一个大小为$width × $height像素的画布,并按比例调整图像以确保整个图像适合画布并居中调整后的图像。如果$heightnull,将生成一个正方形图像,输出宽度和高度都使用$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():
获取图像边框的当前设置(返回一个包含 widthcolor 属性的对象)。

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 ):
设置图像上文本的位置。接受物理像素坐标(分别通过 xy 索引的数组),或以下字符串值之一

  • t - 居中,顶部
  • tr - 右上角
  • r - 居中,右侧
  • br - 右下角
  • b - 居中,底部
  • bl - 左下角
  • l - 居中,左侧
  • tl - 左上角
  • c - 完全居中

setWidth( mixed $width ):
设置边界框的宽度。可以是 'auto',或表示图像百分比宽度的整数。自动将边界框大小调整为适合内容。

setTextAlign( string $align ):
设置边界框内文本的对齐方式。接受包含 leftcenterright 的字符串。

获取方法

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 ):
设置水印在图像上的位置。接受物理像素坐标(分别通过 xy 索引的数组),或以下字符串值之一

  • 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许可证

以下条件之下,任何人无需付费即可获得本软件及其相关文档文件的副本(以下简称“软件”),并可以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向软件提供者提供的人进行此类操作:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的还是法定的,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论基于合同、侵权或其他原因,源于、因或与软件或软件的使用或其他操作有关。