idealizetecnologia / class.upload.php
这个PHP类可以非常容易地上传文件和操作图像。
Requires
- php: >=4
This package is auto-updated.
Last update: 2024-09-27 16:31:08 UTC
README
主页 : http://www.verot.net/php_class_upload.htm
演示 : http://www.verot.net/php_class_upload_samples.htm
捐赠: http://www.verot.net/php_class_upload_donate.htm
商业用途: http://www.verot.net/php_class_upload_license.htm
它做什么?
此类为您管理文件上传。简而言之,它管理上传的文件,并允许您对文件执行任何操作,尤其是如果它是图像,并且您希望多少次就多少次。
这是快速集成网站文件上传的理想类。如果文件是图像,您可以以多种方式转换、调整大小、裁剪。您还可以应用过滤器、添加边框、文本、水印等。这些都是例如画廊脚本所需的所有内容。支持的格式是PNG、JPG、GIF和BMP。
您还可以使用此类对本地文件进行操作,这对于使用图像处理功能特别有用。该类还支持Flash上传器和XMLHttpRequest。
该类与PHP 4、5和7一起工作,并且可以随意本地化错误消息。
通过composer安装
编辑您的composer.json文件,包括以下内容
{
"require": {
"idealizetecnologia/class.upload.php": "^1.0"
}
}
演示和示例
查看test/
目录,您可以在浏览器中加载它。您可以测试该类及其不同的实例化方式,查看一些代码示例,并运行一些测试。
如何使用它?
创建一个简单的HTML文件,其中包含如下表单
<form enctype="multipart/form-data" method="post" action="upload.php"> <input type="file" size="32" name="image_field" value=""> <input type="submit" name="Submit" value="upload"> </form>
创建一个名为upload.php的文件(首先在其中加载了该类)
use Verot\Uploader\Upload; use Verot\Uploader\Exception\FileSizeInvalidException; use Verot\Uploader\Exception\FileExtInvalidException; ... $handle = new Upload($_FILES['image_field']); if ($handle->uploaded) { $handle->file_new_name_body = 'image_resized'; $handle->image_resize = true; $handle->image_x = 100; $handle->image_ratio_y = true; try { $handle->process('/home/user/files/'); echo 'image resized'; $handle->clean(); } catch (\Exception $e) { // TODO: Catch exception when upload file if ($e instanceof FileSizeInvalidException) { // TODO: Error file size invalid } elseif ($e instanceof FileExtInvalidException) { // TODO: Error file extension invalid } // TODO: Error upload process } }
它如何工作?
您使用$_FILES['my_field']
数组实例化该类,其中my_field是上传表单的字段名称。该类将检查原始文件是否已上传到其临时位置(或者,您可以使用本地文件名实例化该类)。
然后,您可以设置多个处理变量来对文件进行操作。例如,您可以重命名文件,如果它是图像,则可以以多种方式转换和调整大小。您还可以设置如果文件已存在,类将执行的操作。
然后,您调用process()
函数来根据您设置的上述处理参数执行操作。它将创建原始文件的新的实例,因此原始文件在每次处理之间保持不变。文件将被处理,并复制到指定的位置。处理变量在完成后将被重置。
您可以重复设置一组新的处理变量,并再次调用process()
,直到您想要多少次就多少次。完成之后,您可以调用clean()
来删除原始上传的文件。
如果您未设置任何处理参数,并在实例化类后立即调用process()
,则上传的文件将简单地复制到指定位置,而不会进行任何更改或检查。
如果您想要表单上传文件,请别忘了在<form>
标签中添加enctype="multipart/form-data"
。
如何处理本地文件?
按照以下方式使用本地文件名实例化该类
$handle = new Upload('/home/user/myfile.jpg');
如何处理通过XMLHttpRequest上传的文件?
使用特殊的 php: 关键字实例化类,如下所示
$handle = new Upload('php:'.$_SERVER['HTTP_X_FILE_NAME']);
在参数前加上 php: 告诉类从 php://input 获取上传的数据,其余的是流文件名,通常在 $_SERVER['HTTP_X_FILE_NAME']
中。但你可以使用任何你认为合适的名称
$handle = new Upload('php:mycustomname.ext');
如何处理原始文件数据?
使用特殊的 data: 关键字实例化类,如下所示
$handle = new Upload('data:'.$file_contents);
如果你的数据是 base64 编码的,类提供了一个简单的 base64: 关键字,它会在使用之前解码你的数据
$handle = new Upload('base64:'.$base64_file_contents);
如何设置语言?
使用第二个参数作为语言代码实例化类
$handle = new Upload($_FILES['image_field'], 'fr_FR'); $handle = new Upload('/home/user/myfile.jpg', 'fr_FR');
如何直接将生成的文件或图片输出到浏览器?
只需调用 process()
而不带参数(或以 null 作为第一个参数)
$handle = new Upload($_FILES['image_field']); header('Content-type: ' . $handle->file_src_mime); echo $handle->process(); die();
或者,如果你想强制下载文件
$handle = new Upload($_FILES['image_field']); header('Content-type: ' . $handle->file_src_mime); header("Content-Disposition: attachment; filename=".rawurlencode($handle->file_src_name).";"); echo $handle->process(); die();
故障排除
如果类没有按预期工作,你可以显示日志,以便详细了解类做了什么。要获取日志,只需在代码末尾添加此行即可
echo $handle->log;
你的问题可能已经在常见问题解答中讨论过: http://www.verot.net/php_class_upload_faq.htm
如果失败,你可以在论坛中搜索,并在那里提出问题: http://www.verot.net/php_class_upload_forum.htm。请不要使用 Github 的问题来寻求帮助。
处理参数
注意:本节中的所有参数在每个处理过程后都会重置。
文件处理
- file_new_name_body 替换名称主体(默认:null)
$handle->file_new_name_body = 'new name';
- file_name_body_add 追加到名称主体(默认:null)
$handle->file_name_body_add = '_uploaded';
- file_name_body_pre 预先添加到名称主体(默认:null)
$handle->file_name_body_pre = 'thumb_';
- file_new_name_ext 替换文件扩展名(默认:null)
$handle->file_new_name_ext = 'txt';
- file_safe_name 格式化文件名(空格更改为 _ 等...)(默认:true)
$handle->file_safe_name = true;
- file_force_extension 如果没有扩展名,则强制扩展(默认:true)
$handle->file_force_extension = true;
- file_overwrite 设置文件已存在时的行为(默认:false)
$handle->file_overwrite = true;
- file_auto_rename 如果文件已存在,则自动重命名文件(默认:true)
$handle->file_auto_rename = true;
- dir_auto_create 如果缺失,则自动创建目标目录(默认:true)
$handle->dir_auto_create = true;
- dir_auto_chmod 如果目标目录不可写,则自动尝试 chmod 目标目录(默认:true)
$handle->dir_auto_chmod = true;
- dir_chmod 创建目录或如果目录不可写时使用的 chmod(默认:0777)
$handle->dir_chmod = 0777;
- file_max_size 设置最大上传大小(默认:php.ini 中的 upload_max_filesize)
$handle->file_max_size = '1024'; // 1KB
- mime_check 设置类是否检查 MIME 与
allowed
列表相匹配(默认:true)
$handle->mime_check = true;
- no_script 设置类是否将脚本转换为文本文件(默认:true)
$handle->no_script = false;
- allowed 允许的 MIME 类型数组(或一个字符串)。接受通配符,如 image/*(默认:检查
init()
)
$handle->allowed = array('application/pdf','application/msword', 'image/*');
- forbidden 禁止的 MIME 类型数组(或一个字符串)。接受通配符,如 image/*(默认:检查
init()
)
$handle->forbidden = array('application/*');
图像处理
- image_convert 如果设置,图像将被转换(可能的值:''|'png'|'jpeg'|'gif'|'bmp';默认:'')
$handle->image_convert = 'jpg';
- image_background_color 如果设置,将强制用颜色填充透明区域,颜色为十六进制(默认:null)
$handle->image_background_color = '#FF00FF';
- image_default_color 非 alpha 透明输出格式(如 JPEG 或 BMP)的回退颜色背景,十六进制(默认:#FFFFFF)
$handle->image_default_color = '#FF00FF';
- png_compression 设置 PNG 图像的压缩级别,介于 1(快但文件大)和 9(慢但文件小)之间(默认:null(Zlib 默认))
$handle->png_compression = 9;
- jpeg_quality 设置 JPEG 图像的压缩质量(默认:85)
$handle->jpeg_quality = 50;
- jpeg_size 如果设置为字节数,将估算
jpeg_quality
以确保输出图像的大小(默认:null)
$handle->jpeg_size = 3072;
- image_interlace 如果设置为 true,图像将被保存为交错格式(如果是 JPEG,则保存为渐进式 PEG)(默认:false)
$handle->image_interlace = true;
图像检查
以下八个设置可以用于在文件是图像时使上传无效(请注意,open_basedir 限制阻止使用这些设置)
- image_max_width 如果设置为像素值,如果图像宽度大于该值,上传将无效(默认:null)
$handle->image_max_width = 200;
- image_max_height 如果设置为像素值,如果图像高度大于该值,上传将无效(默认:null)
$handle->image_max_height = 100;
- image_max_pixels 如果设置为像素数,如果图像像素数大于该值,上传将无效(默认:null)
$handle->image_max_pixels = 50000;
- image_max_ratio 如果设置为宽高比(宽度/高度),如果图像的宽高比大于该值,上传将无效(默认:null)
$handle->image_max_ratio = 1.5;
- image_min_width 如果设置为像素值,如果图像宽度小于该值,上传将无效(默认:null)
$handle->image_min_width = 100;
- image_min_height 如果设置为像素值,如果图像高度小于该值,上传将无效(默认:null)
$handle->image_min_height = 500;
- image_min_pixels 如果设置为像素数,如果图像像素数小于该值,上传将无效(默认:null)
$handle->image_min_pixels = 20000;
- image_min_ratio 如果设置为宽高比(宽度/高度),如果图像的宽高比小于该值,上传将无效(默认:null)
$handle->image_min_ratio = 0.5;
图像缩放
- image_resize 确定图像是否将被缩放(默认:false)
$handle->image_resize = true;
以下变量仅在 image_resize == true 时使用
- image_x 目标图像宽度(默认:150)
$handle->image_x = 100;
- image_y 目标图像高度(默认:150)
$handle->image_y = 200;
使用以下其中一个
- image_ratio 如果为 true,则保持原始尺寸的比例缩放图像,使用
image_x
和image_y
作为最大尺寸(默认:false)
$handle->image_ratio = true;
- image_ratio_crop 如果为 true,则保持原始尺寸的比例缩放图像,使用
image_x
和image_y
作为最大尺寸,并裁剪多余的图像以填充空间。设置也可以是一个字符串,包含一个或多个来自 'TBLR' 的字符,表示在裁剪时将保留图像的哪一侧(默认:false)
$handle->image_ratio_crop = true;
- image_ratio_fill 如果为 true,则保持原始尺寸的比例缩放图像,使用
image_x
和image_y
作为最大尺寸,并调整图像以填充空间,并着色剩余空间。设置也可以是一个字符串,包含一个或多个来自 'TBLR' 的字符,表示图像将在空间中的哪一侧(默认:false)
$handle->image_ratio_fill = true;
- image_ratio_x 如果为 true,则根据
image_y
计算image_x
,并保持原始尺寸的比例缩放图像(默认:false)
$handle->image_ratio_x = true;
- image_ratio_y 如果为 true,则根据
image_x
计算image_y
,并保持原始尺寸的比例缩放图像(默认:false)
$handle->image_ratio_y = true;
- image_ratio_pixels 如果设置为长整数,则缩放图像,计算
image_y
和image_x
以匹配像素数(默认:false)
$handle->image_ratio_pixels = 25000;
最终防止放大或缩小图像
- image_no_enlarging 如果缩放后的图像大于原始图像,则取消缩放,以防止放大(默认:false)
$handle->image_no_enlarging = true;
- image_no_shrinking 如果缩放后的图像小于原始图像,则取消缩放,以防止缩小(默认:false)
$handle->image_no_shrinking = true;
图像效果
以下图像操作需要 GD2+
- image_brightness 如果设置,则校正亮度。值介于 -127 和 127 之间(默认:null)
$handle->image_brightness = 40;
- image_contrast 如果设置,则校正对比度。值介于 -127 和 127 之间(默认:null)
$handle->image_contrast = 50;
- image_opacity 如果设置,则更改图像不透明度。值介于 0 和 100 之间(默认:null)
$handle->image_opacity = 50;
- image_tint_color 如果设置,则用颜色着色图像,值为十六进制 #FFFFFF(默认:null)
$handle->image_tint_color = '#FF0000';
- image_overlay_color 如果设置,将添加彩色叠加,值为十六进制 #FFFFFF(默认:null)
$handle->image_overlay_color = '#FF0000';
- image_overlay_opacity 当
image_overlay_color
设置时使用,确定不透明度(默认:50)
$handle->image_overlay_opacity = 20;
- image_negative 逆转图像中的颜色(默认:false)
$handle->image_negative = true;
- image_greyscale 将图像转换为灰度(默认:false)
$handle->image_greyscale = true;
- image_threshold 应用阈值滤镜。值介于 -127 和 127 之间(默认:null)
$handle->image_threshold = 20;
- image_pixelate 将图像像素化,值为块大小(默认:null)
$handle->image_pixelate = 10;
- image_unsharp 应用锐化蒙版,支持 alpha 透明度(默认:false)
$handle->image_unsharp = true;
- image_unsharp_amount 锐化蒙版量,通常为 50 - 200(默认:80)
$handle->image_unsharp_amount = 120;
- image_unsharp_radius 锐化蒙版半径,通常为 0.5 - 1(默认:0.5)
$handle->image_unsharp_radius = 1;
- image_unsharp_threshold 锐化蒙版阈值,通常为 0 - 5(默认:1)
$handle->image_unsharp_threshold = 0;
图像文本
- image_text 在图像上创建文本标签,值为字符串,包含可能的替换令牌(默认:null)
$handle->image_text = 'test';
- image_text_direction 文本标签方向,'h' 水平或 'v' 垂直(默认:'h')
$handle->image_text_direction = 'v';
- image_text_color 文本标签颜色,十六进制(默认:#FFFFFF)
$handle->image_text_color = '#FF0000';
- image_text_opacity 文本标签不透明度,0 到 100 之间的整数(默认:100)
$handle->image_text_opacity = 50;
- image_text_background 文本标签背景颜色,十六进制(默认:null)
$handle->image_text_background = '#FFFFFF';
- image_text_background_opacity 文本标签背景不透明度,0 到 100 之间的整数(默认:100)
$handle->image_text_background_opacity = 50;
- image_text_font 文本标签的内置字体,从 1 到 5。1 是最小的(默认:5)。值也可以是字符串,表示 GDF 或 TTF 字体的路径(TrueType)
$handle->image_text_font = 4; // or './font.gdf' or './font.ttf'
- image_text_size TrueType 字体的字体大小,像素(GD1)或点(GD1)(默认:16)(仅 TrueType 字体)
$handle->image_text_size = 24;
- image_text_angle TrueType 字体的文本角度,以度为单位,0 度是左到右阅读的文本(默认:null)(仅 TrueType 字体)
$handle->image_text_angle = 45;
- image_text_x 绝对文本标签位置,以像素计,从左侧边框开始。可以是负数(默认:null)
$handle->image_text_x = 5;
- image_text_y 绝对文本标签位置,以像素计,从顶部边框开始。可以是负数(默认:null)
$handle->image_text_y = 5;
- image_text_position 文本标签在图像中的位置,可以是 'TBLR' 中的一个或两个的组合:顶部、底部、左侧、右侧(默认:null)
$handle->image_text_position = 'LR';
- image_text_padding 文本标签填充,像素。可以由
image_text_padding_x
和image_text_padding_y
覆盖(默认:0)
$handle->image_text_padding = 5;
- image_text_padding_x 文本标签水平填充(默认:null)
$handle->image_text_padding_x = 2;
- image_text_padding_y 文本标签垂直填充(默认:null)
$handle->image_text_padding_y = 10;
- image_text_alignment 文本对齐方式,当文本有多行时,'L' 左对齐、'C' 居中对齐或 'R' 右对齐(默认:'C')(仅 GD 字体)
$handle->image_text_alignment = 'R';
- image_text_line_spacing 当文本有多行时,行与行之间的空间,以像素计(默认:0)(仅 GD 字体)
$handle->image_text_line_spacing = 3;
图像转换
- image_auto_rotate 根据 EXIF 数据自动旋转图像(仅 JPEG)(默认:true,即使没有图像处理也会应用)
$handle->image_auto_rotate = false;
- image_flip 翻转图像,'h' 水平翻转或 'v' 垂直翻转(默认:null)
$handle->image_flip = 'h';
- image_rotate 旋转图像。可能的值是 90、180 和 270(默认:null)
$handle->image_rotate = 90;
- image_crop 裁剪图像。接受 4、2 或 1 个值作为 'T R B L' 或 'TB LR' 或 'TBLR'。尺寸可以是 20、20px 或 20%(默认:null)
$handle->image_crop = array(50,40,30,20); OR '-20 20%'...
- image_precrop 在最终调整大小之前裁剪图像。接受 4、2 或 1 个值作为 'T R B L' 或 'TB LR' 或 'TBLR'。尺寸可以是 20、20px 或 20%(默认:null)
$handle->image_precrop = array(50,40,30,20); OR '-20 20%'...
图像边框
- image_bevel 向图像添加斜边边框。值为像素厚度(默认:null)
$handle->image_bevel = 20;
- image_bevel_color1 顶部和左侧斜边颜色,十六进制(默认:#FFFFFF)
$handle->image_bevel_color1 = '#FFFFFF';
- image_bevel_color2 底部和右侧斜边颜色,十六进制(默认:#000000)
$handle->image_bevel_color2 = '#000000';
- image_border 为图片添加单色边框。接受 4、2 或 1 个值,格式为 'T R B L' 或 'TB LR' 或 'TBLR'。尺寸可以是 20,或 20px 或 20%(默认:null)
$handle->image_border = '3px'; OR '-20 20%' OR array(3,2)...
- image_border_color 边框颜色,十六进制格式(默认:#FFFFFF)
$handle->image_border_color = '#FFFFFF';
- image_border_opacity 边框不透明度,介于 0 到 100 之间的整数(默认:100)
$handle->image_border_opacity = 50;
- image_border_transparent 为图片添加渐变到透明的边框。接受 4、2 或 1 个值,格式为 'T R B L' 或 'TB LR' 或 'TBLR'。尺寸可以是 20,或 20px 或 20%(默认:null)
$handle->image_border_transparent = '3px'; OR '-20 20%' OR array(3,2)...
- image_frame 边框类型:1=平面 2=交叉(默认:null)
$handle->image_frame = 2;
- image_frame_colors 十六进制颜色列表,为数组或空格分隔的字符串(默认:'#FFFFFF #999999 #666666 #000000')
$handle->image_frame_colors = array('#999999', '#FF0000', '#666666', '#333333', '#000000');
- image_frame_opacity 边框不透明度,介于 0 到 100 之间的整数(默认:100)
$handle->image_frame_opacity = 50;
图片水印
- image_watermark 在图片上添加水印,值是本地文件名。支持的文件格式是 GIF、JPG、BMP、PNG 和 PNG 透明(默认:null)
$handle->image_watermark = 'watermark.png';
- image_watermark_x 水印绝对位置,从左边框起像素值。可以是负数(默认:null)
$handle->image_watermark_x = 5;
- image_watermark_y 水印绝对位置,从上边框起像素值。可以是负数(默认:null)
$handle->image_watermark_y = 5;
- image_watermark_position 水印在图片中的位置,可以是 'TBLR' 中的一个或两个的组合:顶部、底部、左侧、右侧(默认:null)
$handle->image_watermark_position = 'LR';
- image_watermark_no_zoom_in 防止水印在小于图片大小时被放大(默认:true)
$handle->image_watermark_no_zoom_in = false;
- image_watermark_no_zoom_out 防止水印在大于图片大小时被缩小(默认:false)
$handle->image_watermark_no_zoom_out = true;
图片反射
- image_reflection_height 如果设置,将添加反射。格式可以是像素或百分比,例如 40、'40'、'40px' 或 '40%'(默认:null)
$handle->image_reflection_height = '25%';
- image_reflection_space 源图片和反射之间的像素空间,可以是负数(默认:null)
$handle->image_reflection_space = 3;
- image_reflection_color 反射背景颜色,十六进制格式。现在已被
image_default_color
取代(默认:#FFFFFF)
$handle->image_default_color = '#000000';
- image_reflection_opacity 反射开始的不透明度级别,介于 0 到 100 之间的整数(默认:60)
$handle->image_reflection_opacity = 60;
在调用 process()
之前可以读取的值
- file_src_name 源文件名
- file_src_name_body 源文件名主体
- file_src_name_ext 源文件扩展名
- file_src_pathname 源文件完整路径和名称
- file_src_mime 源文件 MIME 类型
- file_src_size 源文件大小(字节)
- file_src_error 上传错误代码
- file_is_image 布尔标志,如果文件是支持的图片类型则为 true
如果文件是支持的图片类型(并且 open_basedir 限制允许)
- image_src_x 源文件宽度(像素)
- image_src_y 源文件高度(像素)
- image_src_pixels 源文件像素数量
- image_src_type 源文件类型(png、jpg、gif 或 bmp)
- image_src_bits 源文件颜色深度
在调用 process()
之后可以读取的值
- file_dst_path 目标文件路径
- file_dst_name_body 目标文件名主体
- file_dst_name_ext 目标文件扩展名
- file_dst_name 目标文件名
- file_dst_pathname 目标文件完整路径和名称
如果文件是支持的图片类型
- image_dst_type 目标文件类型(png、jpg、gif 或 bmp)
- image_dst_x 目标文件宽度
- image_dst_y 目标文件高度
要求
大多数图像操作需要 GD。强烈推荐 GD2
该类需要 PHP 4.3+,并且与 PHP 5 和 PHP 7 兼容
变更日志
master
- 更好的文件名清理
v 1.0.2 27/08/2018
- 上传类重命名
- 添加命名空间 Verot\Uploader
- 修改 composer.json 文件并使用 psr-4 自动加载
- 按错误类型添加异常处理。例如:大小、扩展名无效
版本 v 0.34 11/03/2018
- 增加了对 UTF-8 文本和 TrueType 字体的支持
- 增加了对原始文件数据和 base64 编码文件数据的支持
- 删除了过时的属性
- 改进了函数可用性的检查
- 添加了
image_no_enlarging
和image_no_shrinking
以替换image_ratio_no_zoom_in
和image_ratio_no_zoom_out
- 即使没有图像处理,也会检查 JPEG 自动旋转
- 改进了 base64 输入和错误处理
- 更新了瑞典语和土耳其语的翻译
版本 v 0.33 16/07/2016
- 增加了 PHP7 兼容性
- 修复了使用 XMLHttpRequest 时文件大小的错误
- 增加了匈牙利语的翻译
- 增加了泰米尔语的翻译
- 增加了芬兰语的翻译
- 修复了土耳其语的翻译
- 更新了 MIME 检测的正则表达式规则
- 添加了 composer.json
- 更新了代码以支持 GIT 发布
- 根据 EXIF 数据自动旋转 JPEG
版本 v 0.32 15/01/2013
- 增加了对 XMLHttpRequest 上传的支持
- 添加了
image_pixelate
- 添加了
image_interlace
- 添加了
png_compression
以改变 PNG 压缩级别 - 如果启用了 Suhosin,则禁用
exec()
- 增加了更多对危险脚本的检测扩展
- 从 PHP 5.4 开始,imagejpeg 将 null 作为第二个参数
- 默认将 PECL Fileinfo MAGIC 路径设置为 null
- 默认将 gd.jpeg_ignore_warning 设置为 true
- 修复了文件名规范化问题
版本 v 0.31 11/04/2011
- 添加了 `_application/x-rar` MIME 类型
- 确保如果我们要使用
exec()
和ini_get_all()
函数,则它们没有被禁用 - 确保在计算 JPEG 大小时不除以零
allowed
和forbidden
现在接受字符串- 如果没有文件扩展名,尝试根据 MIME 类型猜测文件扩展名
- 在更改文件扩展名时改进了类属性
- 添加了
file_force_extension
以允许必要时使用无扩展名的文件 - 改进了文件名安全转换
- 允许为
file_max_size
和jpeg_size
使用短字节值,如 1K、2M、3G - 添加了
image_opacity
以改变图片不透明度 - 添加了
image_border_opacity
以允许半透明边框 - 添加了
image_frame_opacity
以允许半透明框架 - 添加了
image_border_transparent
以允许边框渐变为透明 - 将
image_overlay_percent
复制到image_overlay_opacity
- 将
image_text_percent
复制到image_text_opacity
- 将
image_text_background_percent
复制到image_text_background_opacity
版本 v 0.30 05/09/2010
- 实现了非锐化蒙版,具有 alpha 透明度支持,如果
image_unsharp
为 true 则激活。添加了image_unsharp_amount
、image_unsharp_radius
和image_unsharp_threshold
- 添加了 text/rtf MIME 类型,以及 no_script 异常
- 修复了在激活
no_script
并调用多个process()
时出现的错误 - 改进了 finfo 的错误处理
- 在日志中显示 php.ini 中的 upload_max_filesize 信息
- 为无扩展名的图像自动添加扩展名
- 修复了
image_ratio_fill
顶部和左侧填充问题 - 修复了在透明 PNG 上应用透明 PNG 水印时的 alpha 透明度问题
- 添加了
image_watermark_no_zoom_in
和image_watermark_no_zoom_out
以允许水印调整大小以适应图像。默认情况下,水印可以缩小,但不能放大。
版本 v 0.29 03/02/2010
- 增加了对恶意图像的保护
- 增加了 zip 和 torrent MIME 类型
- 用
explode()
替换了split()
- 使用
image_src_x/y
初始化image_dst_x/y
- 由于它们在
process
之前使用,因此从文档中删除了mime_fileinfo
、mime_file
、mime_magic
和mime_getimagesize
- 添加了更多扩展和MIME类型
- 改进了MIME类型验证
- 改进了日志记录
v 0.28 10/08/2009
- 将ereg函数替换为与PHP 5.3兼容
- 添加了flv MIME类型
- 改进了MIME类型检测
- 添加了
file_name_body_pre
以在文件名前添加一个字符串 - 添加了
mime_fileinfo
、mime_file
、mime_magic
和mime_getimagesize
,以便可以禁用某些MIME类型检查方法 - 使用
exec()
而不是shell_exec()
,以更好地与安全模式配合 - 添加了一些错误信息
- 修复了检查条件时的错误,
processed
没有正确传播
v 0.27 14/05/2009
- 从FILE_目录中查找语言文件
- 如果设置了
file_overwrite
,则禁用file_auto_rename
- 改进了真彩色图像的透明度替换
- 修复了对较新版本的UNIX文件实用程序的调用
- 修复了在安全模式下使用PECL Fileinfo扩展时的错误,以及在使用finfo类时
- 添加了
image_precrop
,在最终调整大小之前裁剪图像
v 0.26 13/11/2008
- 重新编写了从调色板到真彩色的转换,以更好地处理透明度
- 修复了当叠加的图像尺寸错误时的imagecopymergealpha()
- 修复了imagecreatenew(),当要创建的图像的宽度和高度小于1像素时
- 重新编写了MIME类型检测,使其更安全,不依赖于浏览器信息;现在使用Fileinfo PECL扩展、UNIX
file()
命令、MIME magic和getimagesize()
,按此顺序 - 添加了对Flash上传器的支持
- 一些错误修复和错误处理
v 0.25 17/11/2007
- 添加了翻译文件和机制,可以以不同于英语的语言实例化类
- 添加了
forbidden
来设置禁止的MIME类型数组 - 实现了对
allowed
和forbidden
中的简单通配符的支持,例如image/* - 在转换图像时预设文件扩展名为所需的转换格式
- 添加了对BMP图像的读写支持
- 添加了
file_is_image
标志,以确定文件是否为受支持的图像类型 - 在调用
process()
之前,类现在提供有关图像的一些信息。可用的有image_src_x
、image_src_y
和新建的image_src_bits
、image_src_pixels
和image_src_type
。注意,如果启用了open_basedir
限制,则此功能将不起作用 - 改进了日志记录;现在提供有用的系统信息
- 为图像文件添加了一些预处理检查:
image_max_width
、image_max_height
、image_max_pixels
、image_max_ratio
、image_min_width
、image_min_height
、image_min_pixels
和image_min_ratio
- 添加了
image_ratio_pixels
以按像素数调整图像大小,同时保持纵横比 - 为GIF图像添加了
image_is_palette
和image_is_transparent
以及image_transparent_color
- 添加了
image_default_color
来定义非alpha透明输出格式(如JPEG或BMP)的回退颜色 - 更改了
image_background_color
,现在它强制透明区域被着色 - 改进了反射和颜色叠加,使其与alpha透明图像兼容
image_reflection_color
现在已被image_default_color
取代- 现在以真彩色处理透明PNG,并在合并时完全保留alpha通道
- 现在自动检测透明GIF。已弃用
preserve_transparency
- 透明真彩色图像可以保存为GIF,同时保留透明度,半透明区域与
image_default_color
合并 - 透明真彩色图像可以保存为JPG/BMP,半透明区域与
image_default_color
合并 - 修复了图像转换为真彩色的问题
- 如果以空或null参数调用函数,或没有参数,则类现在可以将上传文件的文件内容作为
process()
的返回值输出
v 0.24 25/05/2007
- 添加了
image_background_color
,用于设置图像的默认背景颜色 - 现在可以在文本标签中使用替换令牌
- 将默认的JPEG质量更改为85
- 修复了使用灰度滤镜和相关滤镜时的小错误
- 添加了
image_ratio_fill
,以便在指定尺寸内调整图像,并为剩余空间着色。与image_ratio_crop
非常相似 - 改进了目录的递归创建
- 现在,该类在执行图形操作之前将基于调色板的图像转换为真彩色
版本 0.23 23/12/2006
- 修复了处理同一上传文件多次时的错误。如果有 open_basedir 限制,该类现在在第一次调用
process()
时创建一个临时文件。此文件将用于后续的处理,并在调用clean()
时删除
版本 0.22 16/12/2006
- 如果上传目录不在 open_basedir 中,将自动创建一个临时文件
- 修复了一个错误,该错误阻止通过用其处理后的副本覆盖它来在本地文件上工作
- 添加了 MIME 类型 video/x-ms-wmv 和 image/x-png,并修复了 PNG 对 IE 古怪 MIME 类型的支持
- 修改了
image_ratio_crop
,使其可以接受字符串 'TBLR' 中的一个或多个字符,以确定在裁剪时保留图像的哪一侧 - 添加了对多行的文本支持,使用 "\n" 作为换行符
- 添加了
image_text_line_spacing
,允许设置多行文本之间的空间 - 添加了
image_text_alignment
,允许设置多行文本的对齐方式 image_text_font
现在可以设置为 GDF 字体的路径以加载外部字体- 添加了
image_reflection_height
以创建源图像的反射,其高度以像素或百分比表示 - 添加了
image_reflection_space
以设置源图像和反射之间的像素空间 - 添加了
image_reflection_color
以设置反射的背景颜色 - 添加了
image_reflection_opacity
以设置反射的初始透明度级别
版本 0.21 30/09/2006
- 添加了
image_ratio_crop
,它可以在image_x
和image_y
内调整大小,保持比例,但通过裁剪图像的额外部分来填充空间 - 添加了
mime_check
,默认值为 true,用于对allowed
MIME 列表进行检查 - 如果 MIME 为空,类现在将触发一个错误
- 颜色 #000000 对
image_text_color
是有效的,并修复了相关的文本透明度错误 gd_version()
现在使用gd_info()
,否则使用phpinfo()
- 修复了当目标路径在 Windows 系统上没有尾部斜杠时的路径问题
- 删除了内联函数以实现完全的 PHP5 兼容性
版本 0.20 11/08/2006
- 添加了一些额外的错误检查和信息(GD 存在、权限...)
- 修复了上传没有扩展名的文件时的错误
- 将
image_brightness
和image_contrast
的值更改为介于 -127 和 127 之间 - 添加了
dir_auto_create
以在缺失时自动递归创建目标目录 - 添加了
dir_auto_chmod
以在不可写时自动设置目标目录的 chmod - 添加了
dir_chmod
以设置要使用的默认 chmod - 添加了
image_crop
以裁剪图像 - 添加了
image_negative
以在图像上反转颜色 - 添加了
image_greyscale
以将图像转换为灰度 - 添加了
image_threshold
以在图像上应用阈值滤镜 - 添加了
image_bevel
、image_bevel_color1
和image_bevel_color2
以添加斜边边框 - 添加了
image_border
和image_border_color
以添加单色边框 - 添加了
image_frame
和image_frame_colors
以添加多彩边框
版本 0.19 29/03/2006
- 类现在兼容 i18n(感谢 Sylwester)。
- 类现在可以操作本地文件,而不仅仅是上传的文件(使用本地文件名实例化类)。
file_safe_name
有一点改进。- 添加了
image_brightness
、image_contrast
、image_tint_color
、image_overlay_color
和image_overlay_percent
来对图像进行颜色操作。 - 添加了
image_text
及其所有相关设置,以便在图像上添加文字标签。 - 添加了
image_watermark
及其所有相关设置,以便在图像上添加水印图像。 - 添加了
image_flip
和image_rotate
进行更多的图像操作。 - 添加了
jpeg_size
来计算 JPG 压缩质量,以便适应单个文件大小。
v 0.18 02/02/2006
- 添加了
no_script
将危险的脚本转换为文本文件。 - 添加了
mime_magic_check
来设置使用 mime_magic 的类。 - 添加了
preserve_transparency
(实验性)。感谢 Gregor。 - 修复了大小和 MIME 检查的问题,之前没有工作。感谢 Willem。
- 修复了调整图像大小时内存泄漏的问题。
- 在调整大小时,不再需要设置
image_convert
。 - 现在可以简单地转换图像,而不进行缩放。
- 将默认的
file_max_size
设置为 php.ini 中的 upload_max_filesize。感谢 Edward。
v 0.17 28/05/2005
- 该类可以使用任何版本的 GD。
- 在文件上添加了基于 MIME 类型的安全检查。
- 将许可证更改为仅 GPL v2。
v 0.16 19/05/2005
- 添加了
file_auto_rename
自动重命名文件,如果存在同名文件。 - 添加了
file_safe_name
安全格式化文件名(目前将空格转换为下划线)。 - 添加了一些错误报告,以避免 GD 不存在时的崩溃。
v 0.15 16/04/2005
- 添加了 JPEG 压缩质量设置。感谢 Vad。
v 0.14 14/03/2005
- 重新设计了类文件,以便使用 phpDocumentor 进行解析。
v 0.13 07/03/2005
- 修复了与
image_ratio
相关的 bug。感谢 Justin。 - 添加了
image_ratio_no_zoom_in
和image_ratio_no_zoom_out
。
v 0.12 21/01/2005
- 添加了
image_ratio
以在最大值内调整大小,同时保持图像比例。
v 0.11 22/08/2003
- 更新了 GD2,将
imageresized()
更改为imagecopyresampled()
,将imagecreate()
更改为imagecreatetruecolor()
。