多くの (約 1000) 画像 (プリントスクリーン) があり、これらの画像をトリミングする必要があります (トリミングされた画像はすべて、フル画像の同じ領域にあります)。
どうすればphpでこれを行うことができますか? それとも、GIMP はこれを行うためにいくつかのマクロ スクリプトをサポートしているのでしょうか?
前もって感謝します。
多くの (約 1000) 画像 (プリントスクリーン) があり、これらの画像をトリミングする必要があります (トリミングされた画像はすべて、フル画像の同じ領域にあります)。
どうすればphpでこれを行うことができますか? それとも、GIMP はこれを行うためにいくつかのマクロ スクリプトをサポートしているのでしょうか?
前もって感謝します。
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を返す(画像をトリミングできないか、書き込むことができない)場合があります。
GD 画像関数を使用して 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 画像操作ライブラリが必要です。次に、imagecopy()関数を使用して画像をトリミングし、他の多くの GD 関数を使用して、必要な方法で画像を操作できます。