gpt4 book ai didi

php - 来自目录的GD图像批处理

转载 作者:可可西里 更新时间:2023-11-01 01:05:01 27 4
gpt4 key购买 nike

真的绞尽脑汁,我已经研究了 2 天多了。

目标?单击/选择带有图像的子目录;在提交时,批处理将在所选的整个 DIR 上使用 GD 运行,在同一服务器上的/thumbs 文件夹中创建缩略图。

状态?我一次可以对一个文件执行此操作,需要一次对多个文件执行此操作。

这是我的一次性代码:

$filename = "images/r13.jpg";

list($width,$height) = getimagesize($filename);

$width_ratio = 166 / $width;
if ($height * $width_ratio <= 103)
{
$adjusted_width = 166;
$adjusted_height = $height * $width_ratio;
}
else
{
$height_ratio = 103 / $height;
$adjusted_width = $width * $height_ratio;
$adjusted_height = 103;
}

$image_p = imagecreatetruecolor(166,103);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p,$image,ceil((166 - $adjusted_width) / 2),ceil((103 - $adjusted_height) / 2),0,0,ceil($adjusted_width),ceil($adjusted_height),$width,$height);

imagejpeg($image_p,"images/thumbs/r13.jpg",70);

如您所见,脚本以单个文件为目标,我想遍历目录而不是指定名称。

(我也会研究 imagemagick,但目前它不是一个选项。)

我会继续研究 SO 等,但任何帮助都是巨大的。

谢谢。

最佳答案

你需要从这段代码中创建一个函数:

function processImage($filename){
list($width,$height) = getimagesize($filename);

$width_ratio = 166 / $width;
if ($height * $width_ratio <= 103)
{
$adjusted_width = 166;
$adjusted_height = $height * $width_ratio;
}
else
{
$height_ratio = 103 / $height;
$adjusted_width = $width * $height_ratio;
$adjusted_height = 103;
}

$image_p = imagecreatetruecolor(166,103);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p,$image,ceil((166 - $adjusted_width) / 2),ceil((103 - $adjusted_height) / 2),0,0,ceil($adjusted_width),ceil($adjusted_height),$width,$height);

imagejpeg($image_p,"images/thumbs/".basename($filename),70);
imagedestroy($image_p);
}

请注意此函数的最后两行:它根据传递的文件名写入拇指并销毁资源以释放内存。

现在将其应用于目录中的所有文件:

foreach(glob('images/*.jpg') AS $filename){
processImage($filename);
}

基本上就是这样。

关于php - 来自目录的GD图像批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com