📜  PHP |想象一下 contrastImage()函数(1)

📅  最后修改于: 2023-12-03 15:03:40.150000             🧑  作者: Mango

PHP | 想象一下 contrastImage()函数
简介

contrastImage()函数是一个用于调整图像对比度的PHP函数。它可以提高或降低图像的亮度差异,使图像更加清晰或更加柔和。

函数参数

contrastImage()函数接受三个参数:

  • $image_file:需要调整的图像文件路径,可以是JPEG、PNG、GIF等图片格式。
  • $contrast:对比度调整值,值越大对比度越高,值越小对比度越低。取值范围为-255到255,0表示不调整对比度。
  • $output_file:调整后图像的保存路径和文件名,文件格式和原始文件格式相同。
函数实现
function contrastImage($image_file, $contrast, $output_file) {
    $image_info = getimagesize($image_file);
    $image_type = $image_info[2];

    if (in_array($image_type, [IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF])) {
        if ($image_type == IMAGETYPE_JPEG) {
            $image = imagecreatefromjpeg($image_file);
        } elseif ($image_type == IMAGETYPE_PNG) {
            $image = imagecreatefrompng($image_file);
        } elseif ($image_type == IMAGETYPE_GIF) {
            $image = imagecreatefromgif($image_file);
        }

        imagefilter($image, IMG_FILTER_CONTRAST, $contrast);

        if ($image_type == IMAGETYPE_JPEG) {
            imagejpeg($image, $output_file);
        } elseif ($image_type == IMAGETYPE_PNG) {
            imagepng($image, $output_file);
        } elseif ($image_type == IMAGETYPE_GIF) {
            imagegif($image, $output_file);
        }

        imagedestroy($image);
    } else {
        throw new \InvalidArgumentException('Invalid image type.');
    }
}
使用示例
try {
    contrastImage('image.jpg', 50, 'output.jpg');
} catch(\InvalidArgumentException $e) {
    echo 'Invalid argument: ' . $e->getMessage();
}
注意事项
  • 在使用imagecreatefrompng()函数时,需要注意PNG图片的透明度,否则可能导致图像变黑。
  • 使用该函数进行大量图片处理时,可能会因为内存占用过大而导致PHP程序崩溃。可以考虑分段处理图片。