在Web开发中,我们经常需要处理各种类型的文件,其中图片是最常见的一种,PHP作为一种广泛使用的服务器端脚本语言,提供了多种处理图片的方法,本文将介绍PHP中处理图片的常用方法,包括创建缩略图、旋转图片、添加水印等。
1、创建缩略图
创建缩略图是处理图片的常见需求之一,在PHP中,我们可以使用GD库来创建缩略图,以下是一个简单的示例:
<?php
function createThumbnail($src, $dst, $newWidth, $newHeight) {
list($width, $height) = getimagesize($src);
$thumb = imagecreatetruecolor($newWidth, $newHeight);
switch (strtolower(substr(imagetype($src), 6))) {
case 'gif':
$srcImage = imagecreatefromgif($src);
break;
case 'jpg':
case 'jpeg':
$srcImage = imagecreatefromjpeg($src);
break;
case 'png':
$srcImage = imagecreatefrompng($src);
break;
}
imagecopyresampled($thumb, $srcImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
switch (strtolower(substr(imagetype($src), 6))) {
case 'gif':
imagegif($thumb, $dst);
break;
case 'jpg':
case 'jpeg':
imagejpeg($thumb, $dst);
break;
case 'png':
imagepng($thumb, $dst);
break;
}
}
?>
2、旋转图片
有时候我们需要旋转图片以适应特定的布局或显示效果,在PHP中,我们可以使用GD库来旋转图片,以下是一个简单的示例:
<?php
function rotateImage($src, $dst, $angle) {
list($width, $height) = getimagesize($src);
$image = imagecreatetruecolor($width, $height);
switch (strtolower(substr(imagetype($src), 6))) {
case 'gif':
$source = imagecreatefromgif($src);
break;
case 'jpg':
case 'jpeg':
$source = imagecreatefromjpeg($src);
break;
case 'png':
$source = imagecreatefrompng($src);
break;
}
$rotate = imagerotate($source, $angle, 0);
switch (strtolower(substr(imagetype($src), 6))) {
case 'gif':
imagegif($rotate, $dst);
break;
case 'jpg':
case 'jpeg':
imagejpeg($rotate, $dst);
break;
case 'png':
imagepng($rotate, $dst);
break;
}
}
?>
3、添加水印
为图片添加水印是一种常见的保护版权的方法,在PHP中,我们可以使用GD库来添加水印,以下是一个简单的示例:
<?php
function addWatermark($src, $dst, $watermark) {
list($width, $height) = getimagesize($src);
$image = imagecreatetruecolor($width, $height);
switch (strtolower(substr(imagetype($src), 6))) {
case 'gif':
$source = imagecreatefromgif($src);
break;
case 'jpg':
case 'jpeg':
$source = imagecreatefromjpeg($src);
break;
case 'png':
$source = imagecreatefrompng($src);
break;
}
imagecopymerge($image, $source, 0, 0, 0, 0, $width, $height, 100); // 设置水印透明度为100%(不透明)或根据需要调整透明度值(例如50表示半透明)
switch (strtolower(substr(imagetype($src), 6))) {
case 'gif':
imagegif($image, $dst);
break;
case 'jpg':
case 'jpeg':
imagejpeg($image, $dst);
break;
case 'png':
imagepng($image, $dst);
break;
}
}
?>



还没有评论,来说两句吧...