我有很多(大約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(圖像不能被裁剪或不能寫入)。