我有很多(大约1000张)图像(打印屏幕),我需要裁剪这些图像(所有裁剪的图像都在完整图像的同一区域)。
我怎么能在PHP中这样做?或者也许GIMP支持一些宏脚本来做到这一点?
提前致谢。
答案 0 :(得分:3)
除了使用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(图像无法裁剪或无法写入)。
答案 1 :(得分:2)
您可以使用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());
}
答案 2 :(得分:1)
要使用PHP执行此操作,您需要GD image manipulation library。然后你可以使用imagecopy()函数裁剪你的图像和许多其他GD函数来以任何你需要的方式操作图像。