您好!欢迎访问家园网-www.jy.wang!

家园网

​请讲解下面的GD库函数:图像处理‌

网络 作者:本站 点击:

请讲解下面的GD库函数:图像处理‌


imagecopy() - 复制图像部分区域

imagecopyresized() - 复制并调整大小(低质量)

imagecopyresampled() - 复制并调整大小(高质量)

imagescale() - 缩放图像

imagecrop() - 裁剪图像

imagecropauto() - 自动裁剪(如透明区域)

imagerotate() - 旋转图像

imageflip() - 翻转图像(水平/垂直)

imagefilter() - 应用滤镜(如模糊、灰度等)

imagesavealpha() - 保存PNG图像的Alpha通道


我将按照您要求的格式继续讲解GD库中的图像处理函数,保持与之前相同的详细程度和结构完整性。

一、imagecopy() - 复制图像部分区域

语法结构

bool imagecopy(
    resource $dst_im, 
    resource $src_im, 
    int $dst_x, 
    int $dst_y, 
    int $src_x, 
    int $src_y, 
    int $src_w, 
    int $src_h
)

参数说明

参数类型说明
$dst_imresource目标图像资源
$src_imresource源图像资源
$dst_xint目标位置的x坐标
$dst_yint目标位置的y坐标
$src_xint源图像的起始x坐标
$src_yint源图像的起始y坐标
$src_wint要复制的宽度
$src_hint要复制的高度

示例代码及解析

<?php
// 创建目标图像(400x400)
$dst = imagecreatetruecolor(400, 400);
$white = imagecolorallocate($dst, 255, 255, 255);
imagefill($dst, 0, 0, $white);
// 加载源图像
$src = imagecreatefromjpeg('example.jpg'); // 假设是600x400的图像
// 复制中央区域(300x300)到目标图像中央
$src_w = 300;
$src_h = 300;
$src_x = (imagesx($src) - $src_w) / 2; // 水平居中
$src_y = (imagesy($src) - $src_h) / 2; // 垂直居中
imagecopy(
    $dst, $src, 
    50, 50,        // 目标位置(50,50)
    $src_x, $src_y, // 源图起始点
    $src_w, $src_h  // 复制区域大小
);
// 输出
header('Content-Type: image/png');
imagepng($dst);
imagedestroy($dst);
imagedestroy($src);
?>

代码解析‌:

  1. 创建400x400白色背景目标图像

  2. 从JPEG文件加载源图像

  3. 计算源图像中央300x300区域坐标

  4. 将该区域复制到目标图像的(50,50)位置

  5. 输出PNG格式结果

  6. 销毁两个图像资源

注意事项

  • 不执行缩放操作

  • 适合精确区域复制

  • 目标位置可以超出目标图像范围(会被裁剪)

二、imagecopyresized() - 复制并调整大小(低质量)

语法结构

bool imagecopyresized(
    resource $dst_im, 
    resource $src_im, 
    int $dst_x, 
    int $dst_y, 
    int $src_x, 
    int $src_y, 
    int $dst_w, 
    int $dst_h, 
    int $src_w, 
    int $src_h
)

参数说明(新增)

参数类型说明
$dst_wint目标区域的宽度
$dst_hint目标区域的高度

示例代码及解析

<?php
// 创建目标图像(300x300)
$dst = imagecreatetruecolor(300, 300);
// 加载源图像(假设是600x400)
$src = imagecreatefrompng('source.png');
// 将整个源图像缩放到200x200放入目标图像
imagecopyresized(
    $dst, $src,
    50, 50,       // 目标位置
    0, 0,         // 源图起点
    200, 200,     // 目标尺寸
    imagesx($src), imagesy($src) // 源图完整尺寸
);
// 添加缩略图边框
$black = imagecolorallocate($dst, 0, 0, 0);
imagerectangle($dst, 49, 49, 251, 251, $black);
// 输出
header('Content-Type: image/jpeg');
imagejpeg($dst);
imagedestroy($dst);
imagedestroy($src);
?>

代码解析‌:

  1. 创建300x300目标图像

  2. 从PNG加载源图像

  3. 将完整源图像缩放到200x200

  4. 放置在目标图像的(50,50)位置

  5. 添加2像素黑色边框

  6. 输出JPEG图像

注意事项

  • 使用快速但低质量的算法

  • 会产生锯齿和失真

  • 适合不需要高质量的场景

三、imagecopyresampled() - 复制并调整大小(高质量)

语法结构

bool imagecopyresampled(
    resource $dst_image,
    resource $src_image,
    int $dst_x,
    int $dst_y,
    int $src_x,
    int $src_y,
    int $dst_w,
    int $dst_h,
    int $src_w,
    int $src_h
)

参数说明

  • $dst_image:目标图像资源标识符

  • $src_image:源图像资源标识符

  • $dst_x/$dst_y:目标图像中的起始坐标(左上角)

  • $src_x/$src_y:源图像中的起始坐标(左上角)

  • $dst_w/$dst_h:目标区域的宽度和高度

  • $src_w/$src_h:源图像中要复制的区域的宽度和高度

该函数会返回布尔值,成功时返回TRUE,失败时返回FALSE。

函数功能是将源图像的一部分复制到目标图像,并进行重新采样处理,特别适合用于生成缩略图等需要改变图像尺寸的场景

示例代码及解析

<?php
// 创建高精度目标图像(800x600)
$dst = imagecreatetruecolor(800, 600);
// 加载小尺寸源图(200x150)
$src = imagecreatefromjpeg('small.jpg');
// 高质量放大4倍
imagecopyresampled(
    $dst, $src,
    0, 0,        // 目标起点
    0, 0,        // 源图起点
    800, 600,    // 目标尺寸
    imagesx($src), imagesy($src) // 源图尺寸
);
// 保存高质量JPEG
imagejpeg($dst, 'enlarged.jpg', 95);
imagedestroy($dst);
imagedestroy($src);
echo "高质量放大图像已保存为enlarged.jpg";
?>

代码解析‌:

  1. 创建800x600目标图像

  2. 加载小尺寸JPEG源图

  3. 使用resampled方法高质量放大

  4. 保存为95质量的JPEG文件

  5. 输出完成消息

与resized的区别

特性resizedresampled
算法快速邻近插值双线性/三次插值
质量低,有锯齿高,平滑
速度慢30%-50%
适用缩略图预览最终输出

四、imagescale() - 缩放图像

语法结构

resource|false imagescale(
    resource $image, 
    int $new_width, 
    int $new_height = -1, 
    int $mode = IMG_BILINEAR_FIXED
)

参数说明

参数类型说明
$imageresource源图像
$new_widthint新宽度
$new_heightint新高度(-1保持比例)
$modeint缩放模式常量

缩放模式常量

  • IMG_NEAREST_NEIGHBOUR: 最近邻插值

  • IMG_BILINEAR_FIXED: 双线性插值

  • IMG_BICUBIC: 双三次插值

  • IMG_BICUBIC_FIXED: 快速双三次近似

示例代码及解析

<?php
// 加载原始图像
$src = imagecreatefrompng('original.png');
// 等比例缩放到宽度300
$scaled1 = imagescale($src, 300);
// 强制缩放到200x200
$scaled2 = imagescale($src, 200, 200);
// 高质量缩放到宽度500
$scaled3 = imagescale($src, 500, -1, IMG_BICUBIC);
// 保存结果
imagepng($scaled1, 'scaled_width.png');
imagepng($scaled2, 'scaled_square.jpg');
imagepng($scaled3, 'scaled_highquality.png');
// 释放资源
imagedestroy($src);
imagedestroy($scaled1);
imagedestroy($scaled2);
imagedestroy($scaled3);
?>

代码解析‌:

  1. 加载原始PNG图像

  2. 三种不同缩放方式:

    • 等比例宽度300

    • 强制200x200方形

    • 高质量宽度500

  3. 分别保存结果

  4. 清理所有资源

注意事项

  • 返回新图像资源,不修改原图

  • 默认保持宽高比

  • PHP 5.5+版本支持

五、imagecrop() - 裁剪图像

语法结构

resource|false imagecrop(
    resource $image, 
    array $rect
)

参数说明

参数类型说明
$imageresource源图像
$rectarray裁剪区域数组

裁剪区域数组

[
    'x' => int, // 起点x
    'y' => int, // 起点y
    'width' => int, // 宽度
    'height' => int // 高度
]

示例代码及解析

<?php
// 加载全景图
$image = imagecreatefromjpeg('panorama.jpg');
// 定义中央区域(16:9比例)
$width = imagesx($image);
$height = imagesy($image);
$crop_height = $width * 9 / 16;
$rect = [
    'x' => 0,
    'y' => ($height - $crop_height) / 2,
    'width' => $width,
    'height' => $crop_height
];
// 执行裁剪
$cropped = imagecrop($image, $rect);
// 保存结果
imagejpeg($cropped, 'cropped_16_9.jpg', 90);
// 释放资源
imagedestroy($image);
imagedestroy($cropped);
?>

代码解析‌:

  1. 加载全景图JPEG

  2. 计算16:9比例的裁剪高度

  3. 设置从水平中央裁剪的区域

  4. 执行裁剪操作

  5. 保存90质量JPEG

  6. 清理资源

注意事项

  • 返回新图像资源

  • 裁剪区域不能超出原图范围

  • PHP 5.5+版本支持

六、imagecropauto() - 自动裁剪

语法结构

resource|false imagecropauto(
    resource $image, 
    int $mode = IMG_CROP_DEFAULT, 
    float $threshold = 0.5, 
    int $color = -1
)

裁剪模式常量

常量说明
IMG_CROP_DEFAULT同IMG_CROP_TRANSPARENT
IMG_CROP_TRANSPARENT裁剪透明区域
IMG_CROP_BLACK裁剪黑色区域
IMG_CROP_WHITE裁剪白色区域
IMG_CROP_SIDES裁剪四边相同颜色
IMG_CROP_THRESHOLD使用阈值和指定颜色

示例代码及解析

<?php
// 创建带透明背景的图像
$image = imagecreatetruecolor(500, 300);
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
$red = imagecolorallocate($image, 255, 0, 0);
imagefill($image, 0, 0, $transparent);
// 绘制非居中红色圆形
imagefilledellipse($image, 100, 100, 150, 150, $red);
// 自动裁剪透明区域
$cropped = imagecropauto($image, IMG_CROP_TRANSPARENT);
// 保存结果
imagesavealpha($cropped, true);
imagepng($cropped, 'auto_cropped.png');
// 释放资源
imagedestroy($image);
imagedestroy($cropped);
?>

代码解析‌:

  1. 创建500x300透明背景图像

  2. 在左上角绘制红色圆形

  3. 自动裁剪掉透明区域

  4. 保存PNG保留alpha通道

  5. 清理资源

注意事项

  • 对非透明图像使用IMG_CROP_BLACK/WHITE

  • 阈值参数仅对IMG_CROP_THRESHOLD有效

  • 可能需要多次尝试不同模式

七、imagerotate() - 旋转图像

语法结构

resource|false imagerotate(
    resource $image, 
    float $angle, 
    int $bgd_color, 
    int $ignore_transparent = 0
)

参数说明

参数类型说明
$imageresource源图像
$anglefloat旋转角度(0-360)
$bgd_colorint背景填充色
$ignore_transparentint是否忽略透明(1忽略)

示例代码及解析

<?php
// 加载图像
$src = imagecreatefrompng('arrow.png');
// 旋转45度(红色背景)
$rotated = imagerotate($src, 45, imagecolorallocate($src, 255, 0, 0));
// 旋转30度(透明背景保持)
imagesavealpha($src, true);
$transparent = imagecolorallocatealpha($src, 0, 0, 0, 127);
$rotated_trans = imagerotate($src, 30, $transparent);
// 保存结果
imagepng($rotated, 'rotated_red.png');
imagepng($rotated_trans, 'rotated_trans.png');
// 释放资源
imagedestroy($src);
imagedestroy($rotated);
imagedestroy($rotated_trans);
?>

代码解析‌:

  1. 加载PNG源图

  2. 旋转45度用红色填充背景

  3. 旋转30度保持透明背景

  4. 分别保存两种结果

  5. 清理所有资源

注意事项

  • 角度为正数逆时针旋转

  • 图像尺寸会改变以适应旋转

  • 透明背景需要先设置imagesavealpha

八、imageflip() - 翻转图像

语法结构

bool imageflip(
    resource $image, 
    int $mode
)

翻转模式常量

常量说明
IMG_FLIP_HORIZONTAL1水平翻转
IMG_FLIP_VERTICAL2垂直翻转
IMG_FLIP_BOTH3同时水平和垂直翻转

示例代码及解析

<?php
// 加载不对称图像
$image = imagecreatefromjpeg('asymmetrical.jpg');
// 创建三个副本
$hflip = imagecreatetruecolor(imagesx($image), imagesy($image));
$vflip = imagecreatetruecolor(imagesx($image), imagesy($image));
$bothflip = imagecreatetruecolor(imagesx($image), imagesy($image));
imagecopy($hflip, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagecopy($vflip, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagecopy($bothflip, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
// 执行不同翻转
imageflip($hflip, IMG_FLIP_HORIZONTAL);
imageflip($vflip, IMG_FLIP_VERTICAL);
imageflip($bothflip, IMG_FLIP_BOTH);
// 保存结果
imagejpeg($hflip, 'horizontal_flip.jpg');
imagejpeg($vflip, 'vertical_flip.jpg');
imagejpeg($bothflip, 'both_flip.jpg');
// 释放资源
imagedestroy($image);
imagedestroy($hflip);
imagedestroy($vflip);
imagedestroy($bothflip);
?>

代码解析‌:

  1. 加载原始图像

  2. 创建三个相同尺寸的副本

  3. 分别执行水平、垂直和双向翻转

  4. 保存所有结果

  5. 清理资源

注意事项

  • 直接修改原图资源

  • 比手动复制像素效率高

  • PHP 5.5+版本支持


九、imagefilter() - 应用滤镜

语法结构(完整参数)

bool imagefilter(
    resource $image, 
    int $filtertype, 
    [int $arg1], 
    [int $arg2], 
    [int $arg3], 
    [int $arg4]
)

完整滤镜参数表

滤镜类型参数1参数2参数3参数4效果描述
IMG_FILTER_NEGATE----颜色取反
IMG_FILTER_GRAYSCALE----灰度化
IMG_FILTER_BRIGHTNESS亮度值(-255~255)---亮度调整
IMG_FILTER_CONTRAST对比度值(-100~100)---对比度调整
IMG_FILTER_COLORIZER(0~255)G(0~255)B(0~255)Alpha(0~127)着色效果
IMG_FILTER_EDGEDETECT----边缘检测
IMG_FILTER_EMBOSS----浮雕效果
IMG_FILTER_GAUSSIAN_BLUR----高斯模糊
IMG_FILTER_SELECTIVE_BLUR----选择性模糊
IMG_FILTER_MEAN_REMOVAL----素描效果
IMG_FILTER_SMOOTH平滑度(-8~8)---平滑处理
IMG_FILTER_PIXELATE像素块大小是否启用像素效果(1/0)--像素化

完整示例代码

<?php
// 加载原始图像
$image = imagecreatefromjpeg('portrait.jpg');
// 创建滤镜演示网格(3x4)
$canvas = imagecreatetruecolor(imagesx($image)*3, imagesy($image)*4);
$white = imagecolorallocate($canvas, 255, 255, 255);
imagefill($canvas, 0, 0, $white);
// 定义所有滤镜及其参数
$filters = [
    ['name' => 'Original', 'type' => null],
    ['name' => 'Negate', 'type' => IMG_FILTER_NEGATE],
    ['name' => 'Grayscale', 'type' => IMG_FILTER_GRAYSCALE],
    ['name' => 'Brightness +50', 'type' => IMG_FILTER_BRIGHTNESS, 'args' => [50]],
    ['name' => 'Contrast -30', 'type' => IMG_FILTER_CONTRAST, 'args' => [-30]],
    ['name' => 'Colorize Blue', 'type' => IMG_FILTER_COLORIZE, 'args' => [0, 0, 255, 30]],
    ['name' => 'Edge Detect', 'type' => IMG_FILTER_EDGEDETECT],
    ['name' => 'Emboss', 'type' => IMG_FILTER_EMBOSS],
    ['name' => 'Gaussian Blur', 'type' => IMG_FILTER_GAUSSIAN_BLUR],
    ['name' => 'Mean Removal', 'type' => IMG_FILTER_MEAN_REMOVAL],
    ['name' => 'Pixelate', 'type' => IMG_FILTER_PIXELATE, 'args' => [10, 1]],
    ['name' => 'Smooth -5', 'type' => IMG_FILTER_SMOOTH, 'args' => [-5]]
];
// 应用滤镜并排列到网格
$cols = 3;
$index = 0;
foreach ($filters as $filter) {
    $col = $index % $cols;
    $row = floor($index / $cols);
    
    $x = $col * imagesx($image);
    $y = $row * imagesy($image);
    
    // 复制原始图像
    $copy = imagecreatetruecolor(imagesx($image), imagesy($image));
    imagecopy($copy, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
    
    // 应用滤镜
    if ($filter['type'] !== null) {
        $args = $filter['args'] ?? [];
        imagefilter($copy, $filter['type'], ...$args);
    }
    
    // 添加到画布
    imagecopy($canvas, $copy, $x, $y, 0, 0, imagesx($copy), imagesy($copy));
    
    // 添加标签
    $black = imagecolorallocate($canvas, 0, 0, 0);
    imagestring($canvas, 3, $x+10, $y+10, $filter['name'], $black);
    
    imagedestroy($copy);
    $index++;
}
// 输出结果
header('Content-Type: image/jpeg');
imagejpeg($canvas, null, 90);
// 释放资源
imagedestroy($image);
imagedestroy($canvas);
?>

代码解析‌:

  1. 加载原始人像照片

  2. 创建容纳12种滤镜效果的画布(3列×4行)

  3. 定义包含所有滤镜类型的数组

  4. 使用网格系统排列各种滤镜效果:

    • 第1列为原始图像

    • 第2-12列应用不同滤镜

  5. 每个滤镜单元包含:

    • 图像副本

    • 滤镜应用

    • 文字标签

  6. 输出高质量JPEG(90质量)

  7. 清理所有图像资源

高级使用技巧

  1. 滤镜叠加‌:

// 先灰度化再浮雕
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagefilter($image, IMG_FILTER_EMBOSS);
  1. 动态参数调节‌:

// 根据图像尺寸自动计算像素大小
$pixelSize = max(5, min(20, imagesx($image)/50));
imagefilter($image, IMG_FILTER_PIXELATE, $pixelSize, true);
  1. 选择性应用‌:

// 只对图像右半部分应用滤镜
$width = imagesx($image);
$cropped = imagecrop($image, ['x' => $width/2, 'y' => 0, 'width' => $width/2, 'height' => imagesy($image)]);
imagefilter($cropped, IMG_FILTER_COLORIZE, 100, 50, 0);
imagecopy($image, $cropped, $width/2, 0, 0, 0, $width/2, imagesy($image));
  1. 性能优化‌:

// 对缩略图应用滤镜更高效
$thumb = imagescale($image, 200);
imagefilter($thumb, IMG_FILTER_GAUSSIAN_BLUR);
$thumb = imagescale($thumb, imagesx($image), imagesy($image));

完整注意事项总结

  1. 兼容性‌:

    • 部分滤镜需要GD库编译时支持

    • IMG_FILTER_PIXELATE需要PHP 5.3+

  2. 资源消耗‌:

    • 高斯模糊最耗资源

    • 大图像建议先缩小处理

  3. 透明度处理‌:

    • 多数滤镜会移除alpha通道

    • 处理透明图像需先保存alpha

  4. 效果差异‌:

    • 不同GD版本效果可能不同

    • 建议实际测试验证

  5. 错误处理‌:

    • 返回false表示失败

    • 可用imageistruecolor()检查兼容性


十、imagesavealpha() - 保存PNG图像的Alpha通道

语法结构

bool imagesavealpha(
    resource $image, 
    bool $enable
)

参数说明

参数类型说明
$imageresource图像资源
$enablebool是否保存alpha通道(true/false)

示例代码及解析

<?php
// 创建透明画布
$image = imagecreatetruecolor(400, 300);
imagealphablending($image, false); // 关闭混合模式
// 分配透明色(完全透明)
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
// 绘制半透明圆形
$red = imagecolorallocatealpha($image, 255, 0, 0, 63);
imagefilledellipse($image, 200, 150, 200, 200, $red);
// 启用alpha通道保存
imagesavealpha($image, true);
// 输出PNG
header('Content-Type: image/png');
imagepng($image);
// 对比测试(不保存alpha)
/*
imagesavealpha($image, false);
imagepng($image, 'no_alpha.png');
*/
imagedestroy($image);
?>

代码解析‌:

  1. 创建400x300真彩色图像

  2. 关闭alpha混合以获得真实透明度

  3. 分配完全透明背景色(alpha=127)

  4. 绘制半透明红色圆形(alpha=63)

  5. 启用alpha通道保存

  6. 输出PNG图像

  7. 注释部分展示不保存alpha的效果对比

关键注意事项

  1. 执行顺序‌:

    • 必须在imagepng()之前调用

    • 建议在绘制完成后调用

  2. 相关函数‌:

imagealphablending($image, false); // 必须关闭混合
imagesavealpha($image, true);      // 再启用保存
  1. 透明度级别‌:

    • 0 = 不透明

    • 127 = 完全透明

    • 中间值 = 半透明

  2. 文件格式‌:

    • 只对PNG格式有效

    • JPEG不支持透明度

  3. 常见问题‌:

    • 忘记关闭alphablending会导致透明度异常

    • 多次调用以不同设置保存时需要注意状态


GD库图像处理函数综合对比表

函数核心功能语法结构性能特点适用场景版本要求
imagecopy()区域复制imagecopy($dst, $src, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h)★★★★☆
无缩放开销
精准像素复制
图像局部裁剪
多图层合成
PHP 4+
imagecopyresized()缩放复制
(低质量)
imagecopyresized($dst, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)★★★★★
快速但锯齿明显
缩略图预览
实时图像处理
低配置环境
PHP 4+
imagecopyresampled()缩放复制
(高质量)
imagecopyresampled(...)
参数同resized
★★★☆☆
平滑但慢30-50%
高质量缩放
印刷品输出
图像放大处理
PHP 4+
imagescale()智能缩放imagescale($img, $new_width, [$new_height=-1], [$mode=IMG_BILINEAR_FIXED])★★★★☆
自动比例保持
响应式图片生成
批量尺寸调整
比例约束缩放
PHP 5.5+
imagecrop()指定区域裁剪imagecrop($img, ['x'=>$x, 'y'=>$y, 'width'=>$w, 'height'=>$h])★★★★☆
精确控制区域
固定比例裁剪
焦点区域提取
图像重构
PHP 5.5+
imagecropauto()智能裁剪imagecropauto($img, [$mode=IMG_CROP_DEFAULT], [$threshold=0.5], [$color=-1])★★★☆☆
需多次尝试
透明背景清除
证件照白边去除
自动化预处理
PHP 5.5+
imagerotate()旋转图像imagerotate($img, $angle, $bgd_color, [$ignore_transparent=0])★★★☆☆
尺寸变化有开销
图像矫正
创意旋转效果
水印角度调整
PHP 4.3+
imageflip()翻转操作imageflip($img, $mode)
$mode: IMG_FLIP_*
★★★★★
极低资源消耗
镜像效果
对称设计
3D贴图处理
PHP 5.5+
imagefilter()滤镜应用imagefilter($img, $filtertype, [$arg1], [$arg2]...)★★☆☆☆
高斯模糊最耗资源
图片特效
色彩校正
艺术化处理
PHP 5+
imagesavealpha()透明通道保存imagesavealpha($img, $enable)★★★★☆
必需配合alphablending
PNG透明背景
水印叠加
图层合成
PHP 4.3+

关键维度对比说明

  1. 质量与性能平衡

    • 优先选imagecopyresampled处理最终输出(高质量)1

    • 临时预览用imagecopyresized(速度快)1

  2. 自动化能力

    • imagecropauto可智能去背景(如证件照白边消除)3

    • imagescale保持比例无需计算高度4

  3. 特殊场景优化

    • 缩略图生成:imagescale + imagecrop组合5

    • 批量处理:禁用imagesavealpha提升速度(非透明图)1

  4. 透明通道处理黄金步骤‌:

imagealphablending($img, false);  // 1.关闭混合模式
// ...绘制操作...
imagesavealpha($img, true);       // 2.启用通道保存
imagepng($img);                   // 3.输出PNG

注:实际选择需权衡质量需求(如印刷品选resampled)、实时性要求(如Web应用选resized)及功能特性(如透明处理必用imagesavealpha)。

标签: