1

多くの (約 1000) 画像 (プリントスクリーン) があり、これらの画像をトリミングする必要があります (トリミングされた画像はすべて、フル画像の同じ領域にあります)。

どうすればphpでこれを行うことができますか? それとも、GIMP はこれを行うためにいくつかのマクロ スクリプトをサポートしているのでしょうか?

前もって感謝します。

4

3 に答える 3

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を返す(画像をトリミングできないか、書き込むことができない)場合があります。

于 2009-09-02T09:47:17.840 に答える
2

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());
}
于 2009-09-02T09:03:36.943 に答える
1

PHP でこれを行うには、GD 画像操作ライブラリが必要です。次に、imagecopy()関数を使用して画像をトリミングし、他の多くの GD 関数を使用して、必要な方法で画像を操作できます。

于 2009-09-02T09:06:09.340 に答える