一、PHP中的图像处理库
PHP中主要使用两个库来进行图像处理:GD库和ImageMagick库。
GD库
GD库是PHP的一个内置库,它支持多种图像格式,如JPEG、PNG、GIF等。GD库的操作相对简单,适合初学者。
ImageMagick库
ImageMagick是一个功能强大的图像处理软件,它支持超过100种图像格式。在PHP中,通过Imagick扩展,我们可以使用ImageMagick提供的功能。
二、图片格式转换
使用GD库
<?php
$image = imagecreatefromjpeg('path/to/your/image.jpg');
imagepng($image, 'path/to/save/image.png');
imagedestroy($image);
?>
使用ImageMagick库
<?php
$image = new Imagick('path/to/your/image.jpg');
$image->setImageFormat('png');
$image->writeImage('path/to/save/image.png');
?>
三、图像处理技巧
调整图片大小
使用GD库
<?php
$sourceImage = imagecreatefromjpeg('path/to/your/image.jpg');
$width = 100;
$height = 100;
$targetImage = imagecreatetruecolor($width, $height);
imagecopyresampled($targetImage, $sourceImage, 0, 0, 0, 0, $width, $height, imagesx($sourceImage), imagesy($sourceImage));
imagejpeg($targetImage, 'path/to/save/resized_image.jpg');
imagedestroy($sourceImage);
imagedestroy($targetImage);
?>
使用ImageMagick库
<?php
$image = new Imagick('path/to/your/image.jpg');
$image->resizeImage(100, 100, Imagick::FILTER_LANCZOS, 1);
$image->writeImage('path/to/save/resized_image.jpg');
?>
添加水印
<?php
$sourceImage = imagecreatefromjpeg('path/to/your/image.jpg');
$watermark = imagecreatefrompng('path/to/your/watermark.png');
imagealphablending($watermark, false);
imagesavealpha($watermark, true);
imagecopy($sourceImage, $watermark, 0, 0, 0, 0, imagesx($watermark), imagesy($watermark));
imagejpeg($sourceImage, 'path/to/save/image_with_watermark.jpg');
imagedestroy($sourceImage);
imagedestroy($watermark);
?>
转换为灰度
<?php
$sourceImage = imagecreatefromjpeg('path/to/your/image.jpg');
$width = imagesx($sourceImage);
$height = imagesy($sourceImage);
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
$rgb = imagecolorat($sourceImage, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$gray = round((0.299 * $r) + (0.587 * $g) + (0.114 * $b));
$newColor = imagecolorallocate($sourceImage, $gray, $gray, $gray);
imagesetpixel($sourceImage, $x, $y, $newColor);
}
}
imagejpeg($sourceImage, 'path/to/save/gray_image.jpg');
imagedestroy($sourceImage);
?>