引言
环境准备
在开始之前,请确保你的PHP环境中已经安装了以下扩展:
- GD库:PHP的标准图像处理库,支持多种图片格式。
- Imagick库:一个功能更强大的图像处理库,支持更多的图片格式和高级的图像处理功能。
你可以通过以下命令安装GD库:
sudo apt-get install php-gd
安装Imagick库的具体方法请参考相关文档。
图片格式转换
<?php
// 打开原始图片
$image = imagecreatefromjpeg('original.jpg');
// 创建目标图片
$targetImage = imagecreatetruecolor(100, 100);
// 转换格式
imagecopyresampled($targetImage, $image, 0, 0, 0, 0, 100, 100, imagesx($image), imagesy($image));
// 输出图片
header('Content-Type: image/jpeg');
imagejpeg($targetImage);
// 释放资源
imagedestroy($image);
imagedestroy($targetImage);
?>
<?php
// 打开原始图片
$image = new Imagick('original.jpg');
// 转换格式
$image->setImageFormat('jpeg');
// 输出图片
header('Content-Type: image/jpeg');
echo $image->getImageBlob();
// 释放资源
$image->clear();
$image->destroy();
?>
批量修改图片大小
<?php
// 图片目录
$dir = 'images/';
// 遍历目录
foreach (scandir($dir) as $file) {
// 跳过目录
if (!is_file($dir . $file)) {
continue;
}
// 获取图片信息
list($width, $height) = getimagesize($dir . $file);
// 创建目标图片
$targetImage = imagecreatetruecolor(100, 100);
// 打开原始图片
switch (strtolower(pathinfo($dir . $file, PATHINFO_EXTENSION))) {
case 'jpg':
$image = imagecreatefromjpeg($dir . $file);
break;
case 'png':
$image = imagecreatefrompng($dir . $file);
break;
case 'gif':
$image = imagecreatefromgif($dir . $file);
break;
default:
continue;
}
// 调整大小
imagecopyresampled($targetImage, $image, 0, 0, 0, 0, 100, 100, $width, $height);
// 保存目标图片
imagejpeg($targetImage, $dir . 'resized_' . $file);
// 释放资源
imagedestroy($image);
imagedestroy($targetImage);
}
?>
生成缩略图
<?php
// 图片目录
$dir = 'images/';
// 缩略图大小
$thumbnailWidth = 100;
$thumbnailHeight = 100;
// 遍历目录
foreach (scandir($dir) as $file) {
// 跳过目录
if (!is_file($dir . $file)) {
continue;
}
// 获取图片信息
list($width, $height) = getimagesize($dir . $file);
// 创建目标图片
$targetImage = imagecreatetruecolor($thumbnailWidth, $thumbnailHeight);
// 打开原始图片
switch (strtolower(pathinfo($dir . $file, PATHINFO_EXTENSION))) {
case 'jpg':
$image = imagecreatefromjpeg($dir . $file);
break;
case 'png':
$image = imagecreatefrompng($dir . $file);
break;
case 'gif':
$image = imagecreatefromgif($dir . $file);
break;
default:
continue;
}
// 调整大小
imagecopyresampled($targetImage, $image, 0, 0, 0, 0, $thumbnailWidth, $thumbnailHeight, $width, $height);
// 保存缩略图
imagejpeg($targetImage, $dir . 'thumbnail_' . $file);
// 释放资源
imagedestroy($image);
imagedestroy($targetImage);
}
?>