PHP 代码自动校正歪斜图片

如果您的网站允许用户上传图片,有时候会出现图片歪斜的情况。这通常是由于拍摄时手机或相机的倾斜造成的。本文将介绍如何使用 PHP 代码自动校正这些歪斜的图片。

使用 GD 库

PHP 的 GD 库提供了一个名为 imagerotate() 的函数,可以对图片进行旋转。我们可以通过计算图片的旋转角度,然后使用 imagerotate() 函数来校正图片的方向。

以下是一个基本的代码示例:

$source_image = 'path/to/source/image.jpg';
$degrees = 30; // 需要旋转的角度

$source = imagecreatefromjpeg($source_image);
$rotate = imagerotate($source, $degrees, 0);

// 保存旋转后的图片
imagejpeg($rotate, 'path/to/save/image.jpg');

// 释放内存
imagedestroy($source);
imagedestroy($rotate);

在上面的代码中,$source_image 是需要旋转的源图片的路径,$degrees 是需要旋转的角度。我们首先使用 imagecreatefromjpeg() 函数创建一个源图像资源,然后使用 imagerotate() 函数对其进行旋转。最后,我们使用 imagejpeg() 函数将旋转后的图片保存到指定路径。

自动检测角度

有时,我们不知道图片的旋转角度,而需要自动检测它。这可以通过使用 PHP 的 exif_read_data() 函数来实现。以下是一个示例代码:

$source_image = 'path/to/source/image.jpg';

// 获取图片的 EXIF 数据
$exif = exif_read_data($source_image);

// 获取旋转角度
if(!empty($exif['Orientation'])) {
    switch($exif['Orientation']) {
        case 8:
            $degrees = 90;
            break;
        case 3:
            $degrees = 180;
            break;
        case 6:
            $degrees = -90;
            break;
    }
}

// 如果旋转角度不为 0,则进行旋转
if($degrees != 0) {
    $source = imagecreatefromjpeg($source_image);
    $rotate = imagerotate($source, $degrees, 0);

    // 保存旋转后的图片
imagejpeg($rotate, 'path/to/save/image.jpg');

    // 释放内存
imagedestroy($source);
imagedestroy($rotate);
}

在上面的代码中,我们使用 exif_read_data() 函数获取图片的 EXIF 数据,然后根据 Orientation 值来确定旋转角度。最后,如果旋转角度不为 0,则使用 imagerotate() 函数进行旋转。

结论

使用上述方法,我们可以轻松地校正歪斜的图片。如果您的网站允许用户上传图片,那么这将是一个非常有用的功能。希望本文对您有所帮助!

PHP 自动校正歪斜图片 - 使用 GD 库和 EXIF 数据

原文地址: https://www.cveoy.top/t/topic/lkoM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录