我有很多(大约1000)图像(打印屏幕),我需要裁剪这些图像(所有裁剪图像在完整图像中的相同区域)。裁剪图像的脚本
我该如何在php中做到这一点?或者,也许GIMP支持一些宏脚本来做到这一点?
在此先感谢。
我有很多(大约1000)图像(打印屏幕),我需要裁剪这些图像(所有裁剪图像在完整图像中的相同区域)。裁剪图像的脚本
我该如何在php中做到这一点?或者,也许GIMP支持一些宏脚本来做到这一点?
在此先感谢。
您可以使用GD image functions在PHP中完成。
你的代码可能看起来是这样的(未测试):
$it = new RecursiveDirectoryIterator('./screenshots');
foreach ($it as $file)
{
if (!preg_match('/\.jpe?g$/i', $file->getFilename()))
continue;
$src = imagecreatefromjpeg($file->getRealPath());
$dest = imagecreatetruecolor(1000, 1000);
imagecopyresampled($desc, $src, 0, 0, X_OFFSET, Y_OFFSET, 1000, 1000, WIDTH, HEIGHT);
imagejpeg($dest, './resized/' . $file->getFilename());
}
用PHP做到这一点,你需要一个GD image manipulation library。然后,您可以使用imagecopy()函数来裁剪图像和其他许多GD函数,以便以任何您需要的方式操纵图像。
除了使用GD,正如Greg和n1313提出的那样,您也可以使用ImageMagick作为例如。类似Greg的解决方案,但与
$original_image = new Imagick($file->getRealPath());
$dest_image = $original_image->clone();
$dest_image->cropImage($width, $height, $x, $y);
$dest_image->writeImage('./resized/' . $file->getFilename());
创建新的图像时,您可能会检查是否有异常(即图像无法打开)或cropImage和writeImage返回false(图像不能被裁剪或不能写入)。