当前位置:首页 > PHP

php实现图片处理

2026-02-16 13:15:31PHP

PHP 图片处理基础方法

GD 库是 PHP 内置的图像处理库,需确保 php.ini 中启用 extension=gd

检查 GD 库是否启用:

<?php
print_r(gd_info());
?>

创建画布与基本操作

新建空白画布(300x200 像素):

$image = imagecreatetruecolor(300, 200);
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgColor);

绘制图形示例:

$red = imagecolorallocate($image, 255, 0, 0);
imagefilledrectangle($image, 50, 50, 250, 150, $red);

图片缩放与裁剪

等比例缩放图片:

$srcImage = imagecreatefromjpeg('input.jpg');
$newWidth = 200;
$newHeight = imagesy($srcImage) * ($newWidth / imagesx($srcImage));
$scaledImage = imagescale($srcImage, $newWidth, $newHeight);

精确裁剪区域:

$cropped = imagecrop($srcImage, ['x' => 100, 'y' => 50, 'width' => 200, 'height' => 150]);

图片滤镜效果

应用灰度滤镜:

imagefilter($image, IMG_FILTER_GRAYSCALE);

添加浮雕效果:

php实现图片处理

imagefilter($image, IMG_FILTER_EMBOSS);

文字水印添加

在图片上写入文字:

$textColor = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 50, 100, $textColor, 'arial.ttf', 'Watermark');

图片格式转换

将 PNG 转换为 JPG:

$pngImage = imagecreatefrompng('input.png');
imagejpeg($pngImage, 'output.jpg', 90);
imagedestroy($pngImage);

图片保存与输出

保存到文件:

imagejpeg($image, 'processed.jpg', 85);

直接输出到浏览器:

php实现图片处理

header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);

使用 Imagick 扩展(更高级)

需安装 Imagick 扩展:

pecl install imagick

调整图片质量示例:

$imagick = new Imagick('input.jpg');
$imagick->setImageCompressionQuality(80);
$imagick->writeImage('output.jpg');

添加阴影效果:

$imagick->shadowImage(50, 3, 5, 5);

常见问题处理

处理内存不足:

ini_set('memory_limit', '256M');

解决方向错误(EXIF 修正):

function correctImageOrientation($filename) {
    $exif = exif_read_data($filename);
    if (!empty($exif['Orientation'])) {
        $image = imagecreatefromjpeg($filename);
        switch ($exif['Orientation']) {
            case 3: $image = imagerotate($image, 180, 0); break;
            case 6: $image = imagerotate($image, -90, 0); break;
            case 8: $image = imagerotate($image, 90, 0); break;
        }
        imagejpeg($image, $filename, 90);
    }
}

标签: 图片处理php
分享给朋友:

相关文章

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…