PHP函数之图像处理实例教程
在Web开发中,图像处理是一个重要且常见的任务。PHP作为一个广泛使用的服务器端脚本语言,其提供了许多内置函数和扩展库,来处理常见的图像格式,如JPEG,PNG,GIF等。本文将介绍PHP中图像处理常见的函数和实例。
一、创建图像
1、创建空白图片
可以使用PHP内置函数imagecreate()或imagecreatetruecolor()来创建一个指定大小的空白图片。其中,imagecreate()函数使用较少,因为它的颜色表是不完全的(只有一些预定义的颜色),而imagecreatetruecolor()函数的颜色表比较完整。
实例:创建一个大小为300x200像素的空白图片,并将其输出到浏览器。
<?php
// 创建一个300x200像素的真彩色图片
$image = imagecreatetruecolor(300, 200);
// 设置画布背景色为红色RGB(255,0,0)
$bgColor = imagecolorallocate($image, 255, 0, 0);
// 填充画布背景色
imagefill($image, 0, 0, $bgColor);
// 设置响应头为PNG格式
header('Content-Type: image/png');
// 输出图片到浏览器
imagepng($image);
// 释放资源
imagedestroy($image);
?>
2、从图片文件或URL创建一个新的图片
可以使用函数imagecreatefromjpeg()、imagecreatefrompng()、imagecreatefromgif()来创建一个新的图片资源,并且可以处理常见的图像格式,如JPEG、PNG、GIF等。
实例:从一个本地JPEG格式的图片文件中创建一个新的图片资源,并将其输出到浏览器。
<?php
// 打开指定的JPEG图片
$image = imagecreatefromjpeg('test.jpg');
// 设置响应头为JPEG格式
header('Content-Type: image/jpeg');
// 输出图片到浏览器
imagejpeg($image);
// 关闭图片资源
imagedestroy($image);
?>
3、从字符串创建一个新的图片
可以使用函数imagecreatefromstring()来从一个二进制字符串创建一个新的图片资源。
实例:从一个二进制字符串中创建一个新的PNG格式的图片资源,并将其保存到本地文件中。
<?php // 从字符串创建一个PNG格式的图片资源 $image = imagecreatefromstring($binary_string); // 将图片保存到本地文件中 imagepng($image, 'new_image.png'); // 关闭图片资源 imagedestroy($image); ?>
二、图像处理
1、改变图片大小
可以使用PHP GD库中的函数imagecopyresized()或imagecopyresampled()来改变一个图片的大小。其中,imagecopyresized()并没有保持图片的原有比例,而imagecopyresampled()会保持图片的原有宽高比例。
实例:将一个本地PNG格式的图片文件缩小1/2,并输出到浏览器。
<?php
// 打开指定的PNG图片
$image_src = imagecreatefrompng('src_image.png');
// 获取源图片的宽度和高度
$src_width = imagesx($image_src);
$src_height = imagesy($image_src);
// 将源图片缩小1/2
$image_dst = imagecreatetruecolor($src_width/2, $src_height/2);
imagecopyresampled($image_dst, $image_src, 0, 0, 0, 0, $src_width/2, $src_height/2, $src_width, $src_height);
// 设置响应头为PNG格式
header('Content-Type: image/png');
// 输出图片到浏览器
imagepng($image_dst);
// 关闭图片资源
imagedestroy($image_src);
imagedestroy($image_dst);
?>
2、裁剪图片
可以使用函数imagecopy()或imagecopyresampled()来裁剪一个图片。其中,imagecopy()会保持原有的大小不变,而imagecopyresampled()则会改变图片的大小和比例。
实例:从一个本地JPEG格式的图片文件中裁剪一个200x200像素的中心区域,并将其输出到浏览器。
<?php
// 打开指定的JPEG图片
$image_src = imagecreatefromjpeg('src_image.jpg');
// 获取源图片的宽度和高度
$src_width = imagesx($image_src);
$src_height = imagesy($image_src);
// 计算裁剪后的图像坐标和大小
$crop_x = $src_width/2 - 100;
$crop_y = $src_height/2 - 100;
$crop_width = 200;
$crop_height = 200;
// 创建一个200x200像素的图片用于存放裁剪后的内容
$image_dst = imagecreatetruecolor($crop_width, $crop_height);
// 裁剪源图片到目标图片中
imagecopy($image_dst, $image_src, 0, 0, $crop_x, $crop_y, $crop_width, $crop_height);
// 设置响应头为JPEG格式
header('Content-Type: image/jpeg');
// 输出图片到浏览器
imagejpeg($image_dst);
// 关闭图片资源
imagedestroy($image_src);
imagedestroy($image_dst);
?>
3、添加文本水印
可以使用函数imagettftext()或imagestring()来添加文本水印到一个图片上。
实例:从一个本地PNG格式的图片文件中添加一个带黑色文本水印的字母“W”,并将其输出到浏览器。
<?php
// 打开指定的PNG图片
$image_src = imagecreatefrompng('src_image.png');
// 获取源图片的宽度和高度
$src_width = imagesx($image_src);
$src_height = imagesy($image_src);
// 创建一个黑色文本水印
$text_color = imagecolorallocate($image_src, 0, 0, 0);
$font_size = 40;
$font_angle = 0;
$font_x = $src_width - 60;
$font_y = $src_height - 60;
$font_path = 'arial.ttf';
$text_content = 'W';
imagettftext($image_src, $font_size, $font_angle, $font_x, $font_y, $text_color, $font_path, $text_content);
// 设置响应头为PNG格式
header('Content-Type: image/png');
// 输出图片到浏览器
imagepng($image_src);
// 关闭图片资源
imagedestroy($image_src);
?>
4、添加图片水印
可以使用函数imagecopy()或imagecopymerge()来添加图片水印到一个图片上。
实例:从一个本地JPEG格式的图片文件中添加一个带透明度水印的PNG格式图片,并将其输出到浏览器。
<?php
// 打开指定的JPEG图片
$image_src = imagecreatefromjpeg('src_image.jpg');
// 打开指定的PNG图片
$watermark_src = imagecreatefrompng('watermark.png');
// 获取源图片的宽度和高度
$src_width = imagesx($image_src);
$src_height = imagesy($image_src);
// 获取水印图片的宽度和高度
$watermark_width = imagesx($watermark_src);
$watermark_height = imagesy($watermark_src);
// 往源图片中添加水印
$pos_x = $src_width - $watermark_width - 10;
$pos_y = $src_height - $watermark_height - 10;
imagecopymerge($image_src, $watermark_src, $pos_x, $pos_y, 0, 0, $watermark_width, $watermark_height, 50);
// 设置响应头为JPEG格式
header('Content-Type: image/jpeg');
// 输出图片到浏览器
imagejpeg($image_src);
// 关闭图片资源
imagedestroy($image_src);
imagedestroy($watermark_src);
?>
以上是PHP中图像处理常见的函数和实例,希望可以帮助大家更好地理解PHP在图像处理方面的应用,从而更好地开发Web应用程序。
