私は多くの(約1000)画像(プリントスクリーン)を持っています。これらの画像を切り抜く必要があります(切り抜かれた画像はすべてフル画像の同じ領域にあります)。画像を切り取るためのスクリプト
私はこれをPHPで行うことができますか?あるいは、GIMPはこれを行うためにいくつかのマクロスクリプトをサポートしていますか?
ありがとうございます。
私は多くの(約1000)画像(プリントスクリーン)を持っています。これらの画像を切り抜く必要があります(切り抜かれた画像はすべてフル画像の同じ領域にあります)。画像を切り取るためのスクリプト
私はこれをPHPで行うことができますか?あるいは、GIMPはこれを行うためにいくつかのマクロスクリプトをサポートしていますか?
ありがとうございます。
GD image functionsを使用してPHPで実行できます。
スクリプトは、この(テストしていない)のようなものに見えるかもしれません:あなたはGD image manipulation libraryが必要です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());
}
を。次に、imagecopy()機能を使用して画像をトリミングすることができ、他の多くのGD機能は、必要な方法で画像を操作することができます。
Gregを使用する以外は、Gregとn1313が提案したとおり、ImageMagickも使用できます。グレッグのソリューションに似ていますが、(画像をトリミングすることができないか、書き込むことができません)新しいイメージを作成するときに
$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を返されました。