裁剪图像的脚本

发布于 2024-08-03 12:59:36 字数 127 浏览 8 评论 0原文

我有很多(大约 1000 个)图像(打印屏幕),我需要裁剪这些图像(所有裁剪的图像都位于完整图像的同一区域)。

我怎样才能在 php 中做到这一点?或者也许 GIMP 支持一些宏脚本来执行此操作?

提前致谢。

I have many (about 1000) images (printscreens), and I need to crop these images (all cropped images are in the same region in the full image).

How can I do this in php? Or maybe GIMP is supporting some macro scripts to do this?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷你仙 2024-08-10 12:59:36

除了使用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(图像无法裁剪或无法写入)。

Except using GD, as Greg and n1313 proposed, you can also use ImageMagick for that, e.g. similar to Greg's solution, but with

$original_image = new Imagick($file->getRealPath());
$dest_image = $original_image->clone();
$dest_image->cropImage($width, $height, $x, $y);
$dest_image->writeImage('./resized/' . $file->getFilename());

You might check for exceptions when creating the new image (i.e. image cannot be opened) or returned false on cropImage and writeImage (image cannot be cropped or cannot be written).

撩发小公举 2024-08-10 12:59:36

您可以在 PHP 中使用 GD 图像函数 来完成此操作。

您的脚本可能看起来像这样(未经测试):

$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());
}

You can do it in PHP using the GD image functions.

Your script might look something like this (not tested):

$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());
}
Saygoodbye 2024-08-10 12:59:36

要使用 PHP 执行此操作,您需要一个 GD 图像处理库。然后,您可以使用 imagecopy() 函数来裁剪图像,并使用许多其他 GD 函数以任何方式操作图像你需要。

To do this with PHP you'll need a GD image manipulation library. Then you can use imagecopy() function to crop you image and many others GD functions to manipulate the image in whatever way you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文