zanderwar/class.upload.php

这个PHP类可以非常容易地上传文件和操作图片。由于原始的verot/class.upload.php没有发布,因此这是一个分支。

1.0.0 2019-08-02 04:39 UTC

This package is auto-updated.

Last update: 2024-08-29 05:18:33 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、WEBP和BMP。

您还可以使用此类处理本地文件,这特别适用于使用图像处理功能。该类还支持Flash上传器和XMLHttpRequest。

该类适用于PHP 4、5和7,并且可以随意本地化错误消息。

通过composer安装

编辑您的composer.json文件以包含以下内容

    {
       "require": {
           "verot/class.upload.php": "dev-master"
       }
    }

演示和示例

查看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的文件(其中首先加载了类)

$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;
  $handle->process('/home/user/files/');
  if ($handle->processed) {
    echo 'image resized';
    $handle->clean();
  } else {
    echo 'error : ' . $handle->error;
  }
}

它是如何工作的?

您使用$_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 issues来寻求帮助。

处理参数

注意:本节中的所有参数在每次处理之后都会重置。

文件处理

  • 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如果目标目录不可写,则自动尝试更改目录权限(默认: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'|'webp'|'jpeg'|'gif'|'bmp';默认:'')
$handle->image_convert = 'jpg';
  • image_background_color如果设置,将强制用颜色填充透明区域,十六进制颜色(默认:null)
$handle->image_background_color = '#FF00FF';
  • image_default_color对于JPEG或BMP等非alpha透明输出格式,非透明背景颜色的回退颜色,十六进制(默认:#FFFFFF)
$handle->image_default_color = '#FF00FF';
  • png_compression设置PNG图像的压缩级别,介于1(快但文件大)和9(慢但文件小)之间(默认:null(Zlib默认))
$handle->png_compression = 9;
  • webp_quality设置WEBP图像的压缩质量(默认:85)
$handle->webp_quality = 50;
  • jpeg_quality设置JPEG图像的压缩质量(默认:85)
$handle->jpeg_quality = 50;
  • jpeg_size如果设置为字节数,将调整jpeg_quality,以确保输出图像的大小(默认:null)
$handle->jpeg_size = 3072;
  • image_interlace 如果设置为true,图像将被保存为交错格式(如果是JPEG,则保存为渐进式JPEG)(默认: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 AND image_y 作为最大尺寸(默认:false)
$handle->image_ratio = true;
  • image_ratio_crop 如果为true,保留原始尺寸比例调整图像大小,使用 image_x AND image_y 作为最大尺寸,并裁剪多余部分。该设置也可以是一个字符串,包含一个或多个来自 'TBLR' 的字符,指示裁剪时保留图像的哪一边(默认:false)
$handle->image_ratio_crop = true;
  • image_ratio_fill 如果为true,保留原始尺寸比例调整图像大小,使用 image_x AND 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_yimage_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_opacityimage_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_ximage_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 为图像添加单色边框。接受 'T R B L' 或 'TB LR' 或 'TBLR' 格式的 4、2 或 1 个值。尺寸可以是 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 为图像添加渐变到透明的边框。接受 'T R B L' 或 'TB LR' 或 'TBLR' 格式的 4、2 或 1 个值。尺寸可以是 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、WEBP、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、webp、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、webp、jpg、gif 或 bmp)
  • image_dst_x 目标文件宽度
  • image_dst_y 目标文件高度

要求

大多数图像操作需要 GD。强烈推荐 GD2

该类需要 PHP 4.3+,并且与 PHP 5 和 PHP 7 兼容

变更日志

master

  • 更好的文件名清理
  • 提高 PSR2 兼容性
  • 添加 WebP 支持
  • 更新翻译
  • 将0777权限替换为0755(更安全)
  • 修复错误

v 0.34 11/03/2018

  • 添加了对UTF-8文本和TrueType字体的支持
  • 添加对原始文件数据和base64编码文件数据的支持
  • 删除已弃用的属性
  • 改进了函数可用性的检查
  • 添加了image_no_enlargingimage_no_shrinking以替换image_ratio_no_zoom_inimage_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大小时我们不会除以零
  • allowedforbidden现在可以接受字符串
  • 如果没有文件扩展名,则尝试根据MIME类型猜测文件扩展名
  • 在更改文件扩展名时改进了类属性
  • 添加了file_force_extension以允许在需要时无扩展名文件
  • 改进了文件名安全的转换
  • 允许对file_max_sizejpeg_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_amountimage_unsharp_radiusimage_unsharp_threshold
  • 添加了text/rtf MIME类型,以及no_script异常
  • 修正了当激活no_script并调用多个process()时出现的错误
  • 改进了finfo的错误处理
  • 在日志中显示php.ini中的upload_max_filesize信息
  • 为无扩展名的图像自动添加扩展名
  • 修复了image_ratio_fill的顶部和左侧填充问题
  • 修复了在透明PNG上应用透明PNG水印时的混合问题
  • 添加了image_watermark_no_zoom_inimage_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_fileinfomime_filemime_magicmime_getimagesize
  • 添加了更多扩展和MIME类型
  • 改进的MIME类型验证
  • 改进的日志记录

v 0.28 10/08/2009

  • 替换ereg函数以兼容PHP 5.3
  • 添加flv MIME类型
  • 改进的MIME类型检测
  • 添加file_name_body_pre以在文件名前添加字符串
  • 添加mime_fileinfomime_filemime_magicmime_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 magicgetimagesize(),按此顺序
  • 添加了对Flash上传器的支持
  • 一些错误修复和错误处理

v 0.25 17/11/2007

  • 添加了翻译文件和机制以使用非英语语言实例化类
  • 添加forbidden以设置禁止的MIME类型数组
  • 实现了对allowedforbidden中的简单通配符的支持,例如image/*
  • 在转换图像时预设文件扩展名为所需的转换格式
  • 添加了对BMP图像的读写支持
  • 添加了file_is_image标志以确定文件是否为支持的图像类型
  • 类现在在调用process()之前提供有关图像的一些信息。可用的有image_src_ximage_src_y以及新引入的image_src_bitsimage_src_pixelsimage_src_type。请注意,如果设置了open_basedir限制,则此功能将无法正常工作
  • 改进了日志记录;现在提供有用的系统信息
  • 为图像文件添加了一些预处理检查:image_max_widthimage_max_heightimage_max_pixelsimage_max_ratioimage_min_widthimage_min_heightimage_min_pixelsimage_min_ratio
  • 添加了image_ratio_pixels以将图像调整到像素数,同时保持宽高比
  • 为GIF图像添加了image_is_paletteimage_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()的返回值输出

版本 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-wmvimage/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_ximage_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_brightnessimage_contrast 的值更改为介于 -127 和 127 之间
  • 添加了 dir_auto_create,如果缺失,则自动递归创建目标目录
  • 添加了 dir_auto_chmod,如果目录不可写,则自动更改权限
  • 添加了 dir_chmod,用于设置要使用的默认权限
  • 添加了 image_crop,用于裁剪图像
  • 添加了 image_negative,用于反转图像上的颜色
  • 添加了 image_greyscale,用于将图像转换为灰度
  • 添加了 image_threshold,用于在图像上应用阈值滤镜
  • 添加了 image_bevelimage_bevel_color1image_bevel_color2,用于添加斜边边框
  • 添加了 image_borderimage_border_color,用于添加单色边框
  • 添加了 image_frameimage_frame_colors 以添加多彩边框

v 0.19 29/03/2006

  • 类现在支持国际化(感谢 Sylwester)。
  • 该类现在可以操作本地文件,而不仅仅是上传的文件(使用本地文件名实例化该类)。
  • file_safe_name 有所改进。
  • 添加了 image_brightnessimage_contrastimage_tint_colorimage_overlay_colorimage_overlay_percent 以对图像进行颜色操作。
  • 添加了 image_text 及所有派生设置,以在图像上添加文本标签。
  • 添加了 image_watermark 及所有派生设置,以在图像上添加水印图像。
  • 添加了 image_flipimage_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 的一个错误。感谢 Justin。
  • 添加了 image_ratio_no_zoom_inimage_ratio_no_zoom_out

v 0.12 21/01/2005

  • 添加了 image_ratio 以在最大值内调整大小,同时保持图像比例。

v 0.11 22/08/2003

  • 为 GD2 更新(将 imageresized() 更改为 imagecopyresampled(),将 imagecreate() 更改为 imagecreatetruecolor())。